我试图授权的应用程序与adfs。foror许多天我认为问题是与授权本身
如何根据来自payload claim JWT的角色访问REST端点
然而,我发现在adfs中,你有一个发行者路径,但也有一个access_token_issuer。在分析了adfs的调用后,我意识到发行者和访问令牌发行者都需要以某种方式指定。没有发行者,就没有访问众所周知的,没有访问令牌-发行者令牌没有检查正确的发行者。有没有人经历过这种情况,并有任何线索如何修改JWT解码器使用发行者和访问-token issuer也是。
issueruri = adfs uri that has also the well known config
accessIssuerUri = the one that I receive in the claims in the iss
@Bean
public JwtDecoder jwtDecoder() {
return NimbusJwtDecoder.withIssuerLocation(this.issuerUri).build();
}
字符串
完整的代码也在我作为链接添加的问题中。
openId配置包含如下内容
{
"issuer": "https://base-url/adfs",
"authorization_endpoint": "https://base-url/adfs/oauth2/authorize/",
"token_endpoint": "https://base-url/adfs/oauth2/token/",
"jwks_uri": "https://base-url/adfs/discovery/keys",
....
"access_token_issuer": "http://base-url/adfs/services/trust",
.....
}
型
发行者或access_token_issuer是我必须在解码器和应用程序属性中添加的发行者吗
spring:
security:
oauth2:
resourceserver:
jwt:
issuer-uri:
jwk-set-uri:
型
1条答案
按热度按时间31moq8wy1#
在yaml中设置
jwk-set-uri
,并在openid-configuration中设置jwks_uri
的值,然后:issuer-uri
(禁用iss
声明验证)issuer-uri
为exactly您的访问令牌中iss
声明的值(大小写和尾随斜杠,如果有的话,很重要)Spring Security使用
issuer-uri
做两件事:*如果
jwk-set-uri
属性丢失(仅在这种情况下),请尝试从已知路径获取OpenID配置并尝试从中获取jwks_uri
iss
声明是否与您提供的issuer-uri
值完全相同)Issuer validation是可选的(以及audience)。唯一需要的验证是token signature,Spring Security需要JWK-set的原因(显式提供或从issuer URI推断)。