gpt4 book ai didi

spring-boot - 配置 spring-boot-starter-oauth2-client 以使用 Azure AD 进行身份验证

转载 作者:行者123 更新时间:2023-12-05 02:44:39 25 4
gpt4 key购买 nike

我想在 Spring Boot 2.4 中将 Azure AD 添加为 OAuth2 提供程序。我关注了Spring Boot's OAuth2 docs并提出了以下配置:

spring.security.oauth2.client.provider.azuread.issuer-uri=https://login.microsoftonline.com/<tenant uuid>/v2.0
spring.security.oauth2.client.registration.azuread.authorization-grant-type=authorization_code
spring.security.oauth2.client.registration.azuread.client-id=<client uuid>
spring.security.oauth2.client.registration.azuread.client-name=Azure AD
spring.security.oauth2.client.registration.azuread.client-secret=<client secret>
spring.security.oauth2.client.registration.azuread.provider=azuread
spring.security.oauth2.client.registration.azuread.scope=openid

为了完整起见,这是我的网络安全配置:

@EnableWebSecurity
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {

@Override
protected void configure(HttpSecurity http) throws Exception {
// @formatter:off
http
.authorizeRequests(a -> a
.antMatchers("/", "/login", "/error", "/webjars/**").permitAll()
.anyRequest().authenticated()
)
.oauth2Login();
// @formatter:on
}
}

https://login.microsoftonline.com 上输入凭据回来时,我收到以下错误:

[invalid_id_token] An error occurred while attempting to decode the Jwt: Signed JWT rejected: Another algorithm expected, or no matching key(s) found.

问题起源于DefaultJWTProcessor.java来自 Nimus-JOSE-JWT。

在 Firefox 的网络检查器中查看请求,Spring Boot 从 Issuer URI 中选择正确的 URL。我不知道出了什么问题,感谢任何指点。

最佳答案

Azure AD 有一些非常不直观的(在我看来)默认行为 - 我认为这就是您遇到的情况:

您的问题原因(我认为)

  • 您正在使用标准的 OpenID Connect 范围
  • 这会导致 Azure AD 发出用于图形 API 的访问 token
  • 此 token 未通过自定义 API 中基于标准的验证,因为它仅设计供图形 API 使用 - 它可通过 JWT header 中的随机数字段识别

您需要做什么

  • 公开一个 API 范围,例如“默认”
  • 在您的网络客户端中使用此范围的完整值,例如“api://cb398b43-96e8-48e6-8e8e-b168d5816c0e/default”,其中长标识符是 API 的标识符
  • 然后您将获得 Spring 可以验证的普通 OAuth token - JWT header 中没有随机数字段

更多信息

关于spring-boot - 配置 spring-boot-starter-oauth2-client 以使用 Azure AD 进行身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66336695/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com