在我的应用程序中,我正在使用Spring Security OAuth2提供基于JWT令牌的身份验证。默认情况下,/oauth/token
端点使用client-id
和client-secret
的基本HTTP身份验证进行保护。该端点已按预期完全正常工作。
但是,当我将新端点添加到授权服务器时,我发现它根本没有受到保护。换句话说,我可以在不提供基本HTTP身份验证或不提供任何JWT Bearer令牌的情况下调用端点。
我尝试在与以下项目相同的扩展@EnableResourceServer
的新类上添加ResourceServerConfigurerAdapter
,但是没有用。我仍然可以打电话给我新的端点,而无需先进行身份验证。
@EnableResourceServer
@Configuration
public class ResourcesServerConfiguration extends ResourceServerConfigurerAdapter {
@Autowired
private JwtAccessTokenConverter jwtAccessTokenConverter;
@Override
public void configure(ResourceServerSecurityConfigurer resources) throws Exception{
resources.tokenStore(new JwtTokenStore(jwtAccessTokenConverter));
}
@Override
public void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.anyRequest().authenticated();
}
}
我还尝试在扩展WebSecurityConfigurerAdapter的类上添加@EnableWebSecurity
,如下所示,但效果不佳。在这种情况下,我根本无法访问新端点。无论我提供基本HTTP身份验证还是有效的JWT承载令牌,我都将始终获得401 Unauthorized
。
@EnableWebSecurity
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests().anyRequest().authenticated();
}
}
如果您能指出正确的方向,我将不胜感激。