首页 文章

针对Azure OIDC OAuth2流的Spring安全性

提问于
浏览
0

真实的问题,我本来可以问,为什么我在对授权 endpoints 的响应中只获得了id_token?而且,最好在天蓝色的stackoverflow空间中创建 .

对于上下文,最初的问题更多是关于定制策略 . 其中,进一步的研究确定不是必要的 .

我一直在阅读Spring安全参考指南的OAuth2 / OIDC功能 - 5.7 OAuth 2.0 Login31. 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 endpoints 的登录请求对其登录请求有3个细微差别,目前Spring Security 5代码库中不支持这些细微差别 .

  • “response_type” - Microsoft OIDC API允许id_token或id_token代码... Spring Security支持“代码”或“令牌”OOTB . (id_token为您提供id_toke,id_token代码将为您提供id_toke和代码 . 您可以交换访问令牌的代码 .

  • “response_mode” - Microsoft OIDC API建议使用response_mode = form_post ...这不支持OOTB Spring Security .

  • “nonce” - Microsoft OIDC API建议使用nonce = [unique_value] ...这不支持OOTB Spring Security .

我已经创建了一个fork来查看支持上述内容所需的增强功能 . 我相信他们会 .

spring-security-oauth2-core

OAuth2AuthorizationResponseType - 包含其他类型 .

OAuth2AuthoriztionRequest - 包括对nonce和responseMode的支持

oauth2-client

OAuth2AuthoriationRequestRedirectFilter

OAuth2AuthorizationRequestUriBuilder

以及自动配置适当选项的机制 .

乍一看支持这些参数的变化似乎微不足道 . 但是, Spring 季安全中的类是最终的,因此扩展程度要大得多 .

有人对定制策略有任何建议吗?在不复制代码库的情况下,创建自定义配置以支持细微差别的建议方法是什么?

1 回答

  • 0

    有了juunas线索...我意识到我的问题与我在azure b2c刀片中注册我的应用程序时没有创建api范围的事实有关 . 因此,问题不是 spring 安全配置 . 但是,缺少范围的结果 .

    顺便提一下,Microsoft了解OpenID Connect协议指南中的Get Access Token部分指出,“...通过在请求中包含权限范围并使用response_type = code id_token,授权 endpoints 确保用户已同意范围中指示的权限查询参数,并返回您的应用程序授权代码以交换访问令牌 . “

    每个juunas,这也发生在response_type = code时 . -

相关问题