【发布时间】:2020-11-24 01:01:13
【问题描述】:
我正在尝试使用 Azure AD 配置 Spring Security OpenID Connect,但仅用于身份验证,没有调用任何 tokenEndpoint 或 userInfoEndpoint。
我已成功启动 OpenID 的身份验证流程,并且我在网络流量中看到 AzureAD 正确重定向到 redirect_uri 以及 code 查询参数(例如 http://localhost:8080/login/oauth2/code/azure?code=0.AAAA3...)。这个code应该被微软的MSAL4j库读取,使用Azure AD公钥验证,然后提取包含claims等的JWT。
我的问题是我不知道如何配置 Spring Security Azure 过滤器以在 URI 中查找令牌,而不是尝试调用 tokenEndpoint。我显然收到以下错误:
MsalServiceException:AADSTS240002:输入 id_token 不能用作“urn:ietf:params:oauth:grant-type:jwt-bearer”授权。
我猜这是因为我没有在 Azure AD 配置中启用我不想启用的 ID Token 标志(因为我的应用程序在服务器端进行身份验证)。它还说它正在尝试使用我认为我不想要的on_behalf_ofrequested_token_use(这是我不需要的授权的一部分)。
如何配置 Azure AD Spring Security 以允许通过包含 JWT 的 ?code=... 查询参数进行身份验证?
【问题讨论】:
标签: azure azure-active-directory spring-security-oauth2