oauth-2.0 - 带有自定义提供程序的 Spring Boot + Security OAuth2.0 客户端

标签 oauth-2.0 spring-security-oauth2 spring-oauth2 oauth2client

我正在为 Spring Boot + Security(版本 5)应用程序中的自定义 OAuth2 提供程序创建 OAuth2.0 客户端。

以下是application.properties它具有所有配置,并且我的项目中没有其他配置类。

spring.security.oauth2.client.registration.xxxxxxxxx.client-id=XXXXXXXXXX
spring.security.oauth2.client.registration.xxxxxxxxx.client-secret=XXXXXXXXXX
spring.security.oauth2.client.registration.xxxxxxxxx.scope=openid
spring.security.oauth2.client.registration.xxxxxxxxx.redirect-uri-template=http://localhost:8080/login/oauth2/code/xxxxxxxxx
spring.security.oauth2.client.registration.xxxxxxxxx.client-name=xxxxxxxxx
spring.security.oauth2.client.registration.xxxxxxxxx.provider=xxxxxxxxx
spring.security.oauth2.client.registration.xxxxxxxxx.client-authentication-method=basic
spring.security.oauth2.client.registration.xxxxxxxxx.authorization-grant-type=authorization_code

spring.security.oauth2.client.provider.xxxxxxxxx.authorization-uri=https://api.xxxxxxxxx.com/authorize
spring.security.oauth2.client.provider.xxxxxxxxx.token-uri=https://api.xxxxxxxxx.com/token
spring.security.oauth2.client.provider.xxxxxxxxx.user-info-uri=https://api.xxxxxxxxx.com/userinfo?schema=openid
spring.security.oauth2.client.provider.xxxxxxxxx.user-name-attribute=name
spring.security.oauth2.client.provider.xxxxxxxxx.user-info-authentication-method=header

当我点击 http://localhost:8080/它正确重定向到提供者的登录页面,并在成功登录后重定向回我的应用程序。

现在的问题是当它重定向时,它会显示以下错误消息。
enter image description here

我用谷歌搜索了这个错误,但没有得到任何正确的答案。此外,OAuth2 提供者没有共享这样的 URL。

经过研究,我知道我需要设置以下属性。它应该由 Auth Provider 提供吗?spring.security.oauth2.client.provider.pepstores.jwk-set-uri
我在配置中到底缺少什么?

最佳答案

最后,问题解决了。我只需要配置应该由身份验证提供者提供的 jwk URI。
在客户身份验证提供程序的最终配置下方。

spring.security.oauth2.client.registration.xxxxxxxxx.client-id=XXXXXXXXXX
spring.security.oauth2.client.registration.xxxxxxxxx.client-secret=XXXXXXXXXX
spring.security.oauth2.client.registration.xxxxxxxxx.scope=openid
spring.security.oauth2.client.registration.xxxxxxxxx.redirect-uri-template=http://localhost:8080/login/oauth2/code/xxxxxxxxx
spring.security.oauth2.client.registration.xxxxxxxxx.client-name=xxxxxxxxx
spring.security.oauth2.client.registration.xxxxxxxxx.provider=xxxxxxxxx
spring.security.oauth2.client.registration.xxxxxxxxx.client-authentication-method=basic
spring.security.oauth2.client.registration.xxxxxxxxx.authorization-grant-type=authorization_code

spring.security.oauth2.client.provider.xxxxxxxxx.authorization-uri=https://api.xxxxxxxxx.com/authorize
spring.security.oauth2.client.provider.xxxxxxxxx.token-uri=https://api.xxxxxxxxx.com/token
spring.security.oauth2.client.provider.xxxxxxxxx.user-info-uri=https://api.xxxxxxxxx.com/userinfo?schema=openid
spring.security.oauth2.client.provider.xxxxxxxxx.user-name-attribute=name
spring.security.oauth2.client.provider.xxxxxxxxx.user-info-authentication-method=header
spring.security.oauth2.client.provider.xxxxxxxxx.jwk-set-uri=https://api.xxxxxxxxx.com/jwks

谢谢

关于oauth-2.0 - 带有自定义提供程序的 Spring Boot + Security OAuth2.0 客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56059284/

相关文章:

azure - 如何使用 camunda 实现 Azure AD SSO

spring-security - Spring security - 使用 WebClient 访问通过 Oauth2 "Password"授权类型保护的资源

android - 在运行时使用 Dagger 添加 Retrofit Requestinterceptor

java - 通过 java 访问谷歌日历

java - 使用 Spring Boot 的角色层次结构和 OAuth2 安全性

java - 如何让@WebMvcTest 与 OAuth 一起工作?

OAuth2 将授权传递给另一个客户端

oauth-2.0 - Blazor 和 OAuth JWT 不记名 token 存储

java - Spring OAuth2 自定义授权类型 Autowiring 类返回 null

java - 获取 spring oauth2 的身份验证提供程序