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 (用于隐式流)是实际可行的。 但是,现在授权服务器实现必须能够处理任何( codetokenid_token )和none 。 有关详细信息,请参阅“OpenID Connect Core 1.0,3.身份验证”和“OAuth 2.0多重响应类型编码实践”。

作为支持OpenID Connect的第一步,Spring Security OAuth必须对response_type变得灵活。 你可以在“Issue 619:Handling additional response_types”中找到它的请求。 但是,很难将只需要codetoken的现有代码更改为可以一次接受多个值的新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