Spring security OAuth2令牌端点是否需要身份验证?

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中使用客户端机密的

我正在使用SpringSecurityOAuth2创建自己的授权服务器。在我的例子中,我希望使Angular客户端(SPA)能够使用授权代码授权

客户端可以使用
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;
    }
}