OAuth2 Spring Security 5.2.x from Spring Security Oauth 2.x access authenticated oauth/token_key getting 403
OAuth2 Spring Security 5.2.x from Spring Security Oauth 2.x access authenticated oauth/token_key getting 403
调用时
oauth/token_key
例如检索 OAuth public 密钥
{
"alg":"SHA256withRSA",
"value":"-----BEGIN PUBLIC KEY----- nMAABIjANBgkq… -----END PUBLIC KEY-----"
}
我们如何在通过 Spring OAUTH 调用时传递凭据。
以前这些属性似乎是用
设置的
security.oauth2.resource.jwt.key-uri=http://localhost:8080/oauth/token_key
security.oauth2.client.client-id=clientID
security.oauth2.client.client-secret=clientPassword
在 migration guide 中,我看不到为此或通过配置进行任何适当的迁移。
因为我们现在使用这样的配置,我相信设置 jwt.key-uri
spring.security.oauth2.client.resourceserver.jwt.jwk-set-uri=
但没有设置任何 id 或 secret 的等效位置。
谢谢
因此,像这样保护 public 密钥和遗留 OAuth 服务器可能是一种边缘情况。我此时找不到任何文档来描述有效的解决方案。看起来 Spring Security OAuth 正处于一个巨大的转变中。我不想回滚到已弃用的代码,所以我为 NimbusReactiveJWTDecoder 定义了自己的 bean。
这允许我在应用程序启动时获取 public 密钥时通过基本身份验证。
Koltin 中的示例代码是:
@Bean
fun jwtDecoderByPublicKey(webclient: WebClient): NimbusReactiveJWTDecorder? {
webclient
.get()
.headers { headers -> headers.setBasicAuth("username","password") }
.retrieve()
.bodyToMono<>()
.map {
KeyFactory.getInstance("RSA")
.generatePublic(X509EncodedKeySpec(getKeySpec(it.value))) as RSAPublicKey
}
.map {
NimbusReactiveJWTDecoder.withPublicKey(it)
.signatureAlgorithm(SignatureAlgorithm.form("RS256")).build()
}.block()
如果 属性 给定,则代码受自动配置 bean 启发。
目前我能找到的最佳解决方案。
调用时
oauth/token_key
例如检索 OAuth public 密钥
{
"alg":"SHA256withRSA",
"value":"-----BEGIN PUBLIC KEY----- nMAABIjANBgkq… -----END PUBLIC KEY-----"
}
我们如何在通过 Spring OAUTH 调用时传递凭据。
以前这些属性似乎是用
设置的security.oauth2.resource.jwt.key-uri=http://localhost:8080/oauth/token_key
security.oauth2.client.client-id=clientID
security.oauth2.client.client-secret=clientPassword
在 migration guide 中,我看不到为此或通过配置进行任何适当的迁移。
因为我们现在使用这样的配置,我相信设置 jwt.key-uri
spring.security.oauth2.client.resourceserver.jwt.jwk-set-uri=
但没有设置任何 id 或 secret 的等效位置。
谢谢
因此,像这样保护 public 密钥和遗留 OAuth 服务器可能是一种边缘情况。我此时找不到任何文档来描述有效的解决方案。看起来 Spring Security OAuth 正处于一个巨大的转变中。我不想回滚到已弃用的代码,所以我为 NimbusReactiveJWTDecoder 定义了自己的 bean。
这允许我在应用程序启动时获取 public 密钥时通过基本身份验证。
Koltin 中的示例代码是:
@Bean
fun jwtDecoderByPublicKey(webclient: WebClient): NimbusReactiveJWTDecorder? {
webclient
.get()
.headers { headers -> headers.setBasicAuth("username","password") }
.retrieve()
.bodyToMono<>()
.map {
KeyFactory.getInstance("RSA")
.generatePublic(X509EncodedKeySpec(getKeySpec(it.value))) as RSAPublicKey
}
.map {
NimbusReactiveJWTDecoder.withPublicKey(it)
.signatureAlgorithm(SignatureAlgorithm.form("RS256")).build()
}.block()
如果 属性 给定,则代码受自动配置 bean 启发。
目前我能找到的最佳解决方案。