Oauth 2.0 对OIDC工作流的Spring本机支持

Oauth 2.0 对OIDC工作流的Spring本机支持,oauth-2.0,azure-active-directory,spring-security-oauth2,openid-connect,okta,Oauth 2.0,Azure Active Directory,Spring Security Oauth2,Openid Connect,Okta,我正在尝试为我的SpringJavaWeb应用程序启用OIDC authN和authZ工作流。理想情况下,我希望以一种与IDP无关的方式来实现。也就是说,此应用程序只能与Azure AD、OKTA、AWS SSO、Google auth by deployment admin中的任何一个集成。我希望将用户重定向到应用程序与之集成的任何提供商 以OIDC为标准,我的理解是我应该能够编写一个OIDC身份验证处理过滤器,该过滤器应该与任何提供者一起工作。根据提供程序身份验证url、客户端id、机密、J

我正在尝试为我的SpringJavaWeb应用程序启用OIDC authN和authZ工作流。理想情况下,我希望以一种与IDP无关的方式来实现。也就是说,此应用程序只能与Azure AD、OKTA、AWS SSO、Google auth by deployment admin中的任何一个集成。我希望将用户重定向到应用程序与之集成的任何提供商

以OIDC为标准,我的理解是我应该能够编写一个OIDC身份验证处理过滤器,该过滤器应该与任何提供者一起工作。根据提供程序身份验证url、客户端id、机密、JWKS url来获取提供程序密钥等的必要配置将作为参数传递到此筛选器/rest模板

Q.1是否可以实现与提供商无关的OIDC筛选器?有人能给点建议吗? 我知道Spring本机提供了Oauth2库/API,如AuthorizationCodeResourceDetails、OAuth2ClientAuthenticationProcessingFilter。但是,我没有看到任何内置的OIDC本机处理过滤器。有吗

我尝试并理解了中给出的工作流。但是,当我尝试调整此代码以使其与Azure AD一起工作时,它失败了。这是因为Azure广告需要

响应类型参数必须包含id\u令牌。 请求必须包括要在请求中设置的nonce参数。 AuthorizationCodeResourceDetails不支持此类参数。鉴于OIDC是一个通用标准

Q-2。我不明白为什么每个供应商仍然有不同的要求?这不是违背了OIDC的目的吗。事实上,我读到,如果你通过nonce,谷歌就会抛出错误

Q-3。是否有任何spring本机方法来配置这些额外的特定于提供程序的参数,如nonce、promt、额外的响应类型,最好结合示例


我认为您使用SpringSecurityOIDC的问题在于您使用的是遗留的OAuth库,至少baeldung文章说明了这一点。OAuth2和OIDC现在是SpringSecurity5.x的一部分,而不是一个单独的项目。本例中有一个OIDC客户机登录客户机:它可能会显示不同的结果。是的,虽然并非所有的OIDC提供程序都能实现所有功能,例如发现功能,但OIDC应允许您交换提供程序,等等。

谢谢@sdoxsee。OAuth2LoginAuthenticationFilter和OAuth2AuthorizationRequestRedirectFilter正在一起工作,以基于注册id进行处理程序重定向。但是当用户单击链接时,会显式传递此id。就我而言。如果该应用程序与Google集成,我希望用户隐式地重定向到Google for authN,而不是要求他们单击链接。在baeldung的文章中,这是使用与LoginUrlAuthenticationEntryPoint相同的url、过滤器处理url和重定向url以及OAuth2ClientContextFilter实现的。我怎么能在春天5号做到这一点?