【问题标题】:OAuth2 Spring boot Missing required "user nameOAuth2 Spring boot缺少必需的“用户名
【发布时间】:2020-08-25 06:54:48
【问题描述】:

我正在尝试使用 Spring Boot OAuth 通过 Zoom (https://marketplace.zoom.us/docs/guides/auth/oauth) 对我的应用进行授权

我正在尝试打开页面(/zoom 端点)我的应用程序将我重定向到 Zoom。在这里,我正在进入缩放帐户,Spring 将我重定向到错误页面:

[missing_user_name_attribute] Missing required "user name" attribute name in UserInfoEndpoint for Client Registration: zoom

不知道如何处理它。这是我的代码

配置

@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests().antMatchers("/", "/login**", "/error**").permitAll()
                .anyRequest().authenticated()
                .and().logout().logoutUrl("/logout").logoutSuccessUrl("/")
                .and().oauth2Login();
    }

    @Bean
    public ClientRegistrationRepository clientRegistrationRepository() {
        List<ClientRegistration> registrations = new ArrayList<>();
        registrations.add(zoomClientRegistration());
        return new InMemoryClientRegistrationRepository(registrations);
    }

    private ClientRegistration zoomClientRegistration() {
        return ClientRegistration.withRegistrationId("zoom")
                .clientId(/**myClientId**/)
                .clientSecret(/**{myClientSecret}**/)
                .clientAuthenticationMethod(ClientAuthenticationMethod.BASIC)
                .authorizationGrantType(AuthorizationGrantType.AUTHORIZATION_CODE)
                .redirectUriTemplate("{baseUrl}/login/oauth2/code/{registrationId}")
                .authorizationUri("https://zoom.us/oauth/authorize")
                .tokenUri("https://zoom.us/oauth/token")
                .userInfoUri("https://api.zoom.us/v2/user")
                .clientName("Zoom").build();
    }
}

在我已配置的 Zoom 应用程序中

OAuth 的重定向 URL:http://{my_host_name}/login/oauth2/code/zoom

白名单网址:http://{my_host_name}/zoom

此外,我的应用程序的端点位于 /zoom

【问题讨论】:

    标签: java spring spring-boot oauth zooming


    【解决方案1】:

    您必须在 ClientRegistration 中添加 userNameAttributeName 并设置为正确的用户名属性,它可以是 openId 的“sub”,但也可以是“email”、“id”等不同的东西,请检查 https://api.zoom.us/v2/user 响应以查找哪个属性匹配。

    问候

    【讨论】:

      【解决方案2】:

      对我来说,当我尝试使用带有 Spring Boot 2.5.4 的 spotify Oauth2.0 进入经过身份验证的端点(在我的 java 应用程序中)时会发生异常。我丢失了财产:

      spring.security.oauth2.client.provider.spotify.userNameAttribute=email
      

      spring Oauth2 documentation中有描述

      缺少属性也会出现类似的异常:

      spring.security.oauth2.client.provider.spotify.user-info-uri=https://api.spotify.com/v1/me 然后抛出异常:[missing_user_info_uri] Missing required UserInfo Uri in UserInfoEndpoint for Client Registration: spotify

      【讨论】:

      • 太棒了。我只是将我的应用程序与 spotify 集成,这就是问题所在。谢谢@damian。
      猜你喜欢
      • 1970-01-01
      • 2014-06-29
      • 1970-01-01
      • 2023-02-10
      • 1970-01-01
      • 1970-01-01
      • 2015-01-31
      • 2021-01-16
      • 1970-01-01
      相关资源
      最近更新 更多