java - OAuth2 Spring boot 缺少必需的“用户名

标签 java spring spring-boot oauth zooming

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

我正在尝试打开页面(/zoom 端点),我的应用程序将我重定向到 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

最佳答案

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

问候

关于java - OAuth2 Spring boot 缺少必需的“用户名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61700800/

相关文章:

Spring MVC 3 Issue与资源标签

java - 最终属性@Value中的Spring属性注入(inject)-Java

java - 如何针对不同的数据类型使用MapStruct?

JAVA如何使用方法打印出main中的数组?

java - Java 中使用 nextLine() 获取名称长度

java - 存储库相关方法仅返回空值

java - 使用连接字符串通过 Spring Boot 连接到 Azure EventHub(类似 Kafka)

Spring 启动 : exit jvm on "Application run failed"

java - 对列表中的不同类型字符串进行排序

java - JScrollPane 打开到面板底部