使用 spring 安全配置 Azure AD openid 仅用于身份验证
Configuring Azure AD openid with spring security only for authentication
我正在尝试配置 Spring Security OpenID Connect with Azure AD 但仅用于 authentication,without calling any tokenEndpoint
或 userInfoEndpoint
.
我已成功启动 OpenID 的身份验证流程,我在网络流量中看到 AzureAD 正确重定向到 redirect_uri
以及 code
查询参数(例如 http://localhost:8080/login/oauth2/code/azure?code=0.AAAA3...
)。此 code
应该由 Microsoft 的 MSAL4j
库读取,使用 Azure AD public 密钥进行验证,然后提取包含 claims
等的 JWT
.
我的问题是我不知道如何配置 Spring 安全 Azure 过滤器来查找 URI 中的令牌,而不是尝试调用 tokenEndpoint
。我显然收到以下错误:
MsalServiceException: AADSTS240002: Input id_token cannot be used as 'urn:ietf:params:oauth:grant-type:jwt-bearer' grant.
我猜这是因为我没有在我不想启用的 Azure AD 配置中启用 ID Token
标志(因为我的应用程序在服务器端进行身份验证)。它还说它正在尝试使用我认为我不想要的 on_behalf_of
requested_token_use
(这是我不需要的授权的一部分)。
我如何配置 Azure AD Spring 安全性以允许通过包含 JWT 的 ?code=...
查询参数进行 身份验证?
要解决此问题,您需要在应用程序中启用 implicit flow,
请在应用程序的app manifest中将oauth2AllowImplicitFlow
和oauth2AllowIdTokenImplicitFlow
设置为true。
我正在尝试配置 Spring Security OpenID Connect with Azure AD 但仅用于 authentication,without calling any tokenEndpoint
或 userInfoEndpoint
.
我已成功启动 OpenID 的身份验证流程,我在网络流量中看到 AzureAD 正确重定向到 redirect_uri
以及 code
查询参数(例如 http://localhost:8080/login/oauth2/code/azure?code=0.AAAA3...
)。此 code
应该由 Microsoft 的 MSAL4j
库读取,使用 Azure AD public 密钥进行验证,然后提取包含 claims
等的 JWT
.
我的问题是我不知道如何配置 Spring 安全 Azure 过滤器来查找 URI 中的令牌,而不是尝试调用 tokenEndpoint
。我显然收到以下错误:
MsalServiceException: AADSTS240002: Input id_token cannot be used as 'urn:ietf:params:oauth:grant-type:jwt-bearer' grant.
我猜这是因为我没有在我不想启用的 Azure AD 配置中启用 ID Token
标志(因为我的应用程序在服务器端进行身份验证)。它还说它正在尝试使用我认为我不想要的 on_behalf_of
requested_token_use
(这是我不需要的授权的一部分)。
我如何配置 Azure AD Spring 安全性以允许通过包含 JWT 的 ?code=...
查询参数进行 身份验证?
要解决此问题,您需要在应用程序中启用 implicit flow,
请在应用程序的app manifest中将oauth2AllowImplicitFlow
和oauth2AllowIdTokenImplicitFlow
设置为true。