Spring security OAuth2令牌端点是否需要身份验证?
我正在使用SpringSecurityOAuth2创建自己的授权服务器。在我的例子中,我希望使Angular客户端(SPA)能够使用授权代码授权 客户端可以使用Spring security OAuth2令牌端点是否需要身份验证?,spring-security,oauth-2.0,spring-security-oauth2,Spring Security,Oauth 2.0,Spring Security Oauth2,我正在使用SpringSecurityOAuth2创建自己的授权服务器。在我的例子中,我希望使Angular客户端(SPA)能够使用授权代码授权 客户端可以使用oauth/authorize端点,用户可以登录,浏览器被重定向到SPA。现在,客户端希望通过oauth/token获取令牌。但该端点是安全的,需要客户端id和客户端机密。默认情况下,在Spring中启用安全性 在中,我可以找到以下内容: 默认情况下,Spring OAuth在@Configuration support中使用客户端机密的
oauth/authorize
端点,用户可以登录,浏览器被重定向到SPA。现在,客户端希望通过oauth/token
获取令牌。但该端点是安全的,需要客户端id和客户端机密。默认情况下,在Spring中启用安全性
在中,我可以找到以下内容:
默认情况下,Spring OAuth在@Configuration support中使用客户端机密的HTTP基本身份验证为您保护令牌端点。XML中不是这种情况(因此应该显式地保护它)
据我所知,公开客户不应该使用客户机密。但这意味着,oauth/token
端点不应该是安全的
问题:为oauth/token
禁用身份验证是一种好的做法吗?如果没有,我应该如何解决这个问题
这是我的网站安全配置:
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Bean
@Override
protected UserDetailsService userDetailsService() {
// WARN: Do not use the default password encoder in production environments!
return new InMemoryUserDetailsManager(
User.withDefaultPasswordEncoder()
.username("user-a")
.password("password")
.roles("USER_ROLE")
.build()
);
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http = http
.requiresChannel()
.anyRequest()
.requiresSecure()
.and()
.cors()
.and()
.authorizeRequests()
.antMatchers("/.well-known/**")
.permitAll()
.and();
super.configure(http);
}
@Bean
public CorsConfigurationSource corsConfigurationSource() {
CorsConfiguration configuration = new CorsConfiguration();
configuration.setAllowedOrigins(singletonList("*"));
configuration.setAllowedMethods(asList("GET","POST"));
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
source.registerCorsConfiguration("/**", configuration);
return source;
}
}