Spring Security和OpenID Connect(OIDC)
在我目前的项目中,我全面使用Spring Security OAuth(http://projects.spring.io/spring-security-oauth/)项目来保护我们的资源(Web API)。 一切正常,直到现在。
我现在正在开发客户端,并且正在寻找对身份验证方案的良好支持(因为OAuth是授权协议)。 经过长时间的长时间的互联网搜索,我确信我应该采用OpenID Connect(http://openid.net/connect/)来满足这一要求,因为它是“OAuth 2.0之上的简单身份层”(I但是,在安全主题的情况下,不存在“简单”)。
可悲但真实我无法在Spring Security中找到有关OpenID Connect支持的良好资源(不要混淆“纯粹”OpenID)。 在https://github.com/mitreid-connect/OpenID-Connect-Java-Spring-Server上有一个OpenID Connect参考实现,但我期望Spring Security具有与Spring Security类似的全面文档等。 我在这里发现了大约2年的讨论https://github.com/spring-projects/spring-security-oauth/issues/220但是目前的状态是什么? 寻找“OpenID Connect的Spring Security支持”并不能提供任何“有形”的结果。
在Spring Security的帮助下,您是否有任何有关实施OpenID Connect的信息,文档和/或经验?
在OpenID Connect出现之前,假设请求参数response_type
的值是code
(用于授权代码流)或token
(用于隐式流)是实际可行的。 但是,现在授权服务器实现必须能够处理任何( code
, token
, id_token
)和none
。 有关详细信息,请参阅“OpenID Connect Core 1.0,3.身份验证”和“OAuth 2.0多重响应类型编码实践”。
作为支持OpenID Connect的第一步,Spring Security OAuth必须对response_type
变得灵活。 你可以在“Issue 619:Handling additional response_types”中找到它的请求。 但是,很难将只需要code
或token
的现有代码更改为可以一次接受多个值的新code
。 在撰写本文时,2015年12月12日发布的第619期最新评论最后以下文摘录。
任何评论都非常值得欢迎,因为事实证明这是一个大型的重构练习 。
如果Spring Security OAuth纯粹是一个没有商业机构支持的自愿项目,那么这样一个大变化就不太可能发生。
我的经验:大约两年前,我从零开始编写了一个OAuth 2.0服务器。 之后我知道了OpenID Connect的存在。 在阅读了与OpenID Connect相关的规范之后,我终于得出结论来转储现有的实现并再次从头开始重新编写服务器。
正如你猜测的那样,OpenID Connect并不简单。
另请参阅“OAuth和OpenID Connect谈话的全面实施者关于调查结果”中的“5.响应类型”。
更新 (2017年11月23日)
Spring Framework上的授权服务器和OpenID提供程序
https://github.com/authlete/spring-oauth-server
Spring Framework上的资源服务器
https://github.com/authlete/spring-resource-server
spring-oauth-server支持OAuth 2.0和OpenID Connect。 spring-resource-server具有在“OpenID Connect 1.0,5.3。UserInfo Endpoint”中定义的UserInfo Endpoint的实现。 这两个实现都不使用Spring Security OAuth,而是使用Spring Boot和Authlete。
博客: Spring + OAuth 2.0 + OpenID Connect
链接地址: http://www.djcxy.com/p/32773.html上一篇: Spring Security and OpenID Connect (OIDC)
下一篇: Incorporate Leaflet map in revealjs presentation within R