You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

配置OAuth2登录时遇OpenID Connect认证请求受限问题求助

解决OAuth2客户端OIDC登录时的invalid_scope错误

问题重现

配置OAuth2登录时遇到以下错误,认证服务器返回invalid_scope,提示OpenID Connect 1.0 authentication requests are restricted:

2023-04-02T11:52:28.856+03:00 DEBUG 3866 --- [nio-9000-exec-2] org.apache.tomcat.util.http.Parameters   : Start processing with input [response_type=code&client_id=guitar-cloud-client&scope=openid&state=P3j3mwpUvm1UR_tVYjWelCDGauVZxf4ZOOcUyFVSc00%3D&redirect_uri=http://127.0.0.1:8080/login/oauth2/code/guitar-cloud-client-oidc&nonce=D-qBrlre2P-il99B1HW8ejFWfMR1fQHB2QG7WRHydNc]
2023-04-02T11:52:28.857+03:00 DEBUG 3866 --- [nio-9000-exec-2] .s.a.DefaultAuthenticationEventPublisher : No event was found for the exception org.springframework.security.oauth2.server.authorization.authentication.OAuth2AuthorizationCodeRequestAuthenticationException
2023-04-02T11:52:28.857+03:00 DEBUG 3866 --- [nio-9000-exec-2] o.s.s.web.DefaultRedirectStrategy        : Redirecting to `http://127.0.0.1:8080/login/oauth2/code/guitar-cloud-client-oidc?error=invalid_scope&error_description=OpenID%20Connect%201.0%20authentication%20requests%20are%20restricted.&error_uri=https%3A%2F%2Fdatatracker.ietf.org%2Fdoc%2Fhtml%2Frfc6749%23section-4.1.2.1&state=P3j3mwpUvm1UR_tVYjWelCDGauVZxf4ZOOcUyFVSc00%3D`

此前已在认证服务器端通过添加以下代码启用OIDC:

http.getConfigurer(OAuth2AuthorizationServerConfigurer.class)
        .oidc(Customizer.withDefaults());

解决方案

1. 认证服务器端:确保客户端注册包含openid权限

在认证服务器的RegisteredClient配置中,必须为客户端添加openid scope,否则会限制OIDC请求:

RegisteredClient.withId("guitar-cloud-client")
    .clientId("guitar-cloud-client")
    .clientSecret("{noop}your-client-secret") // 根据实际加密方式调整
    .authorizationGrantType(AuthorizationGrantType.AUTHORIZATION_CODE)
    .redirectUri("http://127.0.0.1:8080/login/oauth2/code/guitar-cloud-client-oidc")
    .scope("openid") // 必须添加这个scope
    .build();

2. 客户端端:正确配置OIDC客户端信息

方式一:通过配置文件(application.yml)

spring:
  security:
    oauth2:
      client:
        registration:
          guitar-cloud-client-oidc:
            client-id: guitar-cloud-client
            client-secret: your-client-secret
            scope: openid
            authorization-grant-type: authorization_code
            redirect-uri: "{baseUrl}/login/oauth2/code/{registrationId}"
        provider:
          guitar-cloud-client-oidc:
            issuer-uri: http://127.0.0.1:9000 # 认证服务器的issuer地址

方式二:Java代码配置Security Filter Chain

确保客户端的Security配置启用OAuth2登录:

@Bean
public SecurityFilterChain clientSecurityFilterChain(HttpSecurity http) throws Exception {
    http
        .authorizeHttpRequests(auth -> auth.anyRequest().authenticated())
        .oauth2Login(Customizer.withDefaults()); // 启用默认OAuth2登录配置,自动适配OIDC
    return http.build();
}

验证要点

  • 确认认证服务器已启用OIDC端点(通过/.well-known/openid-configuration可查看元数据)
  • 客户端请求的scope参数包含openid
  • 认证服务器的客户端注册信息与客户端配置的client-id、redirect-uri完全匹配

内容的提问来源于stack exchange,提问作者Tony Cruelkid

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 19:53:09