OIDC标准合规疑问:是否必须调用UserInfo端点获取Claims?
OIDC 标准相关问题解答
1. 是否必须始终调用UserInfo端点获取Claims?
不是必须。OIDC标准仅要求openid scope对应的核心Claims(比如sub)必须出现在ID Token中,其他请求的Claims(如profile、email类)既可以放在ID Token里返回,也可以通过UserInfo端点提供,具体由认证提供商的配置策略决定。像你对接的Keycloak默认把这类Claims放入ID Token、Shibboleth的OIDC插件选择放在UserInfo端点,这两种实现都符合标准。
2. 仅在ID Token缺少所需Claims时调用UserInfo端点的方案是否合规合理?
这个方案既合规又合理:
- 合规性:OIDC标准没有强制要求必须调用UserInfo端点,也不禁止根据ID Token的内容决定是否发起调用,只要最终获取到了已请求且认证提供商启用的Claims,就符合规范要求。
- 合理性:这种方式能减少不必要的网络请求,提升应用性能——如果ID Token里已经包含所有需要的Claims,直接使用即可;仅在缺失时调用UserInfo端点补全,兼顾了标准合规性和运行效率。
当然,你也可以选择始终调用UserInfo端点并忽略ID Token中的Claims,这同样合规,但会多一次网络请求,属于逻辑简洁性和性能之间的取舍,可根据自身需求选择。
内容的提问来源于stack exchange,提问作者Fabian
相关产品推荐
相关产品推荐

