为Oauth2 Spring Boot创建自定义OpenId Provider

时间:2018-02-11 11:06:15

标签: spring spring-security oauth-2.0 openid openid-provider

我使用Oauth2框架进行授权和访问控制,以保护我的spring boot微服务api。 Oauth2框架工作正常,但现在我的客户端需要一个专用的OpenId Provider,用于在Oauth2框架之上进行身份验证。我已经在Google上进行了一些搜索,但是找不到很多资源来为Oauth2实现Own OpenId Provider。我已经浏览了很多博客,并且可以理解当我们想要从Oauth2委派身份验证时,OpenId基本上被使用。 OpenId是在Oauth2之上创建的,但是无法找到很多资源来激活或实现它。

任何人都可以帮助我

我在Spring Framework中使用Oauth2完成的完整源代码如下所示

oauth2-spring

2 个答案:

答案 0 :(得分:1)

根据spring-projects / OAuth 2.0 Features Matrix中的“ spring-security”,对于OpenID Connect来说,Spring Framework不是一个好的起点。新项目(Spring Security,Spring Cloud Security和Spring Boot OAuth2)都不支持授权服务器。另一方面,旧项目(Spring Security OAuth)存在体系结构问题,无法支持OpenID Connect。

website of OpenID Connect说,“ “ OpenID Connect 1.0是位于OAuth 2.0协议之上的简单身份层。” 这句话可能给人的印象是,OpenID Connect可以在以下方面实现:现有的OAuth 2.0实施步骤。但是,事实并非如此。有一个证据是spring-security-oauth Issue 619,您会看到该项目已放弃了对OpenID Connect的支持。如果有兴趣,请参见Full-Scratch Implementor of OAuth and OpenID Connect Talks About Findings中的“ 5.响应类型”。

存在许多支持OpenID Connect的实现。为什么不检查certified implementations的列表?

更新(2019年11月14日):

Spring Security团队已决定不再为授权服务器提供支持。有关详情,请参见其announce

答案 1 :(得分:0)

我认为,首先实现OAuth2代码流可能会更容易开始。然后添加隐式流,最后添加OpenID Connect部分。

如果您想拥有一个认真的OpenID提供程序,我建议您不要从头开始实施,因为有很多细节需要正确处理。相反,我建议使用Hydra之类的东西,可以将其集成到现有系统中。

已经从头创建了OpenID Provider(SimpleLogin.io),可以说几乎永远需要100%遵守协议...