【问题标题】:Configuring Azure AD openid with spring security only for authentication使用 Spring Security 配置 Azure AD openid 仅用于身份验证
【发布时间】:2020-11-24 01:01:13
【问题描述】:

我正在尝试使用 Azure AD 配置 Spring Security OpenID Connect,但仅用于身份验证没有调用任何 tokenEndpointuserInfoEndpoint

我已成功启动 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


    【解决方案1】:

    要解决此问题,您需要在您的应用程序中启用implicit flow

    请在应用程序的app manifest 中将oauth2AllowImplicitFlowoauth2AllowIdTokenImplicitFlow 设置为true

    【讨论】:

      猜你喜欢
      • 2021-07-29
      • 2018-06-23
      • 2018-11-17
      • 2021-10-28
      • 2014-11-25
      • 2020-07-14
      • 1970-01-01
      • 2021-05-25
      • 2015-12-22
      相关资源
      最近更新 更多