- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用 spring-security
和 spring-security-oauth2
(JWT 访问 token )进行身份验证和授权。其想法是让所有请求通过,但能够区分经过身份验证的用户和未经身份验证的用户。一旦我启用 @EnableResourceServer
,我配置的 HttpSecurity
似乎就会被忽略。并且请求返回401:
{
"error": "unauthorized",
"error_description": "Full authentication is required to access this resource"
}
这是配置:
@SpringBootApplication
@EnableJpaRepositories
@ComponentScan
@EntityScan
@EnableWebSecurity
public class Application {
public static void main(final String[] args) {
new SpringApplicationBuilder(Application.class).bannerMode(Banner.Mode.OFF).run(args);
}
@EnableResourceServer
public static class SecurityConfig extends WebSecurityConfigurerAdapter implements JwtAccessTokenConverterConfigurer {
@Override
protected void configure(final HttpSecurity http) throws Exception {
http.csrf().disable();
http.authorizeRequests().anyRequest().permitAll();
}
@Override
public void configure(final JwtAccessTokenConverter converter) {
final DefaultAccessTokenConverter conv = new DefaultAccessTokenConverter();
conv.setUserTokenConverter(userAuthenticationConverter());
converter.setAccessTokenConverter(conv);
}
@Bean
public UserAuthenticationConverter userAuthenticationConverter() {
return new ResourceAuthenticationConverter();
}
}
最佳答案
你就快到了。这是一个简单的修复 - javadoc of @EnableResourceServer给出了答案:
Users should add this annotation and provide a @Bean of type ResourceServerConfigurer (e.g. via ResourceServerConfigurerAdapter) that specifies the details of the resource (URL paths and resource id).
但是,您正在使用 WebSecurityConfigurerAdapter
。只需将其更改为 ResourceServerConfigurerAdapter
并增强 configure
的可见性即可:
@EnableResourceServer
public static class SecurityConfig extends ResourceServerConfigurerAdapter implements JwtAccessTokenConverterConfigurer {
// snip
@Override
public void configure(final HttpSecurity http) throws Exception {
http.csrf().disable();
http.authorizeRequests().anyRequest().permitAll();
}
// snip
关于java - 尽管authorizeRequests().anyRequest().permitAll(),spring-security仍返回401,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43931255/
我对spring security配置的理解http.anyRequest().authenticated()是任何请求都必须经过身份验证,否则我的 Spring 应用程序将返回 401 响应。 不幸
我使用 spring-security 和 spring-security-oauth2 (JWT 访问 token )进行身份验证和授权。其想法是让所有请求通过,但能够区分经过身份验证的用户和未经身
在下面的代码中,不同的链式方法有什么作用? PUBLIC_URL 是一个包含公共(public) URL 的字符串数组。 protected void configure(HttpSecurity h
这两种不同的安全方法有什么区别?第一个依赖于配置 Spring Security 中的 HttpSecurity 对象。 。第二个依赖于将 @PreAuthorize("isAuthenticated
我正在尝试做一个例子 here link我消除了所有可能的错误,但保留了一个: 错误: org.springframework.beans.factory.BeanCreationException:
我是一名优秀的程序员,十分优秀!