Spring Boot OAuth2客户端集成Azure AD支持外部用户时的JWT验证异常排查求助
Spring Boot OAuth2客户端集成Azure AD支持外部用户时的JWT验证异常排查求助
各位大佬好,我遇到了一个Azure AD集成的问题,想请教下大家:
我已经配置了Azure AD的参数(包含tenantID),公司内部AD用户登录我的Spring Boot应用一切正常,但现在想支持外部用户登录——已经把应用Manifest里的signInAudience设置成了"AzureADandPersonalMicrosoftAccount"。
根据官方文档的提示,我应该把token和authorize地址里的tenant-id替换成common,于是我配置了Spring Boot OAuth2客户端如下:
spring: security: oauth2: client: provider: azure: issuer-uri: "https://login.microsoftonline.com/XXXXXXXXXXX/v2.0" token-uri: "https://login.microsoftonline.com/common/oauth2/v2.0/token" authorization-uri: "https://login.microsoftonline.com/common/oauth2/v2.0/authorize" user-info-uri: "https://graph.microsoft.com/oidc/userinfo" jwk-set-uri: "https://login.microsoftonline.com/XXXXXXXXXXX/discovery/v2.0/keys"
但现在遇到了两种异常情况:
- 用上面的配置时,会抛出异常:
Signed JWT rejected: Another algorithm expected, or no matching key(s) found。查了下发现JWT头里的kid不在https://login.microsoftonline.com/XXXX/discovery/v2.0/keys返回的密钥列表里; - 当我把
jwk-set-uri改成https://login.microsoftonline.com/common/discovery/v2.0/keys后,虽然能找到对应的kid,但又出现新的异常:[invalid_id_token] The ID Token contains invalid claims: {iss=https://login.microsoftonline.com/XXXXX/v2.0}。
想问下大家,正确集成Azure AD并支持外部用户的方式应该是什么样的?
备注:内容来源于stack exchange,提问作者mruellan
相关产品推荐
相关产品推荐

