Spring Boot集成Azure AD OAuth2配置异常排查求助
Spring Boot集成Azure Active Directory OAuth2认证配置问题
尝试配置Spring Boot应用集成Azure Active Directory的OAuth2认证,遇到以下问题:
- Spring Boot似乎未读取application.yml文件,或配置存在错误,启动时抛出核心错误:
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'org.springframework.security.oauth2.client.registration.ClientRegistrationRepository' available
- 若在配置类中手动添加
ClientRegistrationRepositoryBean,Tomcat服务器可成功启动,但认证端点不符合预期——实际跳转端点为/oauth2/authorization/azure,预期为/login/oauth2/code/。
使用版本信息:
- Spring 5.3.20
- Spring Boot 2.7.10
- Spring Security 5.6.9.Final
application.yml配置内容
azure: activedirectory: client-id: {CLIENT ID} client-secret: {CLIENT SECRET} tenant-id: {TENANT ID} authorization-clients: facility-inventory: scopes: openid, profile, user, offline_access authorization-grant-type: client_credentials spring: security: oauth2: client: provider: azure-active-directory: issuer-uri: https://login.microsoftonline.com/{ORG}/oauth2/v2.0 registration: azure: provider: azure-active-directory client-id: {CLIENT ID} client-secret: {CLIENT SECRET} scope: openid, profile, user, offline_access authorization-uri: /login/oauth2/authorize/ redirect-uri: /login/oauth2/code/ authorization-grant-type: client_credentials pre-established-redirect-uri: {Base URL}/login/oauth2/code/ registered-redirect-uri: {Base URL}/login/oauth2/code use-current-uri: false
自定义ClientRegistrationRepository Bean代码
@Bean public ClientRegistrationRepository clientRegistrationRepository() { return new InMemoryClientRegistrationRepository( ClientRegistration .withRegistrationId("azure") .clientId("{CLIENT ID}") .clientSecret("CLIENT SECRET") .clientAuthenticationMethod(ClientAuthenticationMethod.CLIENT_SECRET_BASIC) .authorizationGrantType(AuthorizationGrantType.AUTHORIZATION_CODE) .redirectUri("/login/oauth2/code/*") .scope("openid", "profile", "email", "address", "phone") .authorizationUri("https://login.microsoftonline.com/{ORG}/oauth2/v2.0") .tokenUri("https://login.microsoftonline.com/{ORG}/oauth2/v2.0/token") .userNameAttributeName(IdTokenClaimNames.SUB) .clientName("Valuations-Mgmt-Tool_qa_ac_client") .build() ); }
内容的提问来源于stack exchange,提问作者sparks
相关产品推荐
相关产品推荐

