我正在尝试使用Spring Boot OAuth通过Zoom(https://marketplace.zoom.us/docs/guides/auth/oauth)在我的应用程序上进行授权
我正在尝试打开页面(/zoom
endpoint),我的应用程序将我重定向到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:超文本传输协议://{my_host_name}/login/oaut2/code/zoom
白名单URL:超文本传输协议://{my_host_name}/zoom
我的应用程序的endpoint也在/zoom
您必须在Client注册中添加userNameAtbanteName并设置为正确的username属性,它可以是openId的“sub”,也可以是“email”、“id”等不同的东西,检查https://api.zoom.us/v2/user响应以查找匹配的属性。
问候
对我来说,当我尝试使用Spotify Oaut2.0和Spring Boot 2.5.4进入经过身份验证的endpoint(在我的java应用程序中)时,会出现异常。我缺少属性:
spring.security.oauth2.client.provider.spotify.userNameAttribute=email
这是描述在SpringOaut2留档
丢失的属性也会出现类似的异常:
spring.security用户info-uri=https://api.spotify.com/v1/me然后抛出异常:[missing_user_info_uri]缺少所需的UserInfo Uri在UserInfoEndpoint客户端注册:Spotify