真正的问题,我本来可以问,为什么我在对授权端点的响应中只获得了id_token?并且,最好在天蓝色的stackoverflow空间中创建。
对于上下文,原始问题更多是关于自定义策略。其中,进一步研究确定不是必要的。
我一直在阅读Spring安全参考指南的OAuth2 / OIDC功能 - 5.7 OAuth 2.0 Login,31. OAuth 2.0 Login — Advanced Configuration和github OAuth2 Login Samples试图找出如何扩展或者为Microsofts Azure OIDC API创建自定义实现 - Authorize access to web applications using OpenID Connect and Azure Active Directory。
这些是观察。一般来说,我根据我的实验看到了什么,以及基于Spring安全行为和Microsoft Understanding OpenID Connect Protocol指南文档我认为是真实的。
Azure针对/ authorization端点的登录请求对其登录请求有3个细微差别,目前Spring Security 5代码库中不支持这些细微差别。
我已经创建了一个分支,以查看支持上述内容所需的增强功能。我相信他们会的。
弹簧安全的oauth2芯
OAuth2AuthorizationResponseType - 包含其他类型。
OAuth2AuthoriztionRequest - 包括对nonce和responseMode的支持
的oauth2的客户端
OAuth2AuthoriationRequestRedirectFilter
OAuth2AuthorizationRequestUriBuilder
一种自动配置适当选项的机制。
乍一看支持这些参数的变化似乎微不足道。但是,春季安全中的类是最终的,因此扩展的范围要大得多。
任何人对定制策略都有任何建议吗?在不复制代码库的情况下,创建自定义配置以支持细微差别的建议方法是什么?
答案 0 :(得分:0)
随着juunas的线索...我意识到我的问题与我在azure b2c刀片中注册我的应用程序时没有创建api范围的事实有关。因此,问题不是弹簧安全配置。但是,缺少范围的结果。
顺便提一下,Microsoft了解OpenID Connect协议指南中的获取访问令牌部分," ...通过在请求中包含权限范围并使用response_type = code + id_token,授权端点确保用户已同意到范围查询参数中指示的权限,并返回您的应用程序授权代码以交换访问令牌。"
每个juunas,这也发生在response_type = code时。 -