gpt4 book ai didi

spring - hasRole 总是返回 403

转载 作者:行者123 更新时间:2023-12-04 16:05:52 24 4
gpt4 key购买 nike

我似乎无法正确配置我的安全配置。无论我在使用时做什么 hasRole我的端点总是返回 403。

此外,除非我复制我的 antMatchers,否则我什么也做不了。两者下.requestMatchers().authorizeRequests() .我显然在这里遗漏了一些东西。

基本上我希望一切都需要身份验证,但只有在用户是某些组的成员(现在只是管理员)时才能访问一些端点。

我的安全配置如下。旁边的一切hasRole作品。

@EnableGlobalMethodSecurity(prePostEnabled = true)
@EnableWebSecurity
@Configuration
public class WebSecurityConfiguration extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.csrf().disable()
.requestMatchers()
.antMatchers(HttpMethod.GET, "/v2/api-docs", "/swagger-resources/**", "/swagger-ui.html")
.antMatchers(HttpMethod.GET, "/users")
.and()
.authorizeRequests()
.antMatchers(HttpMethod.GET, "/v2/api-docs", "/swagger-resources/**", "/swagger-ui.html").permitAll()
.antMatchers(HttpMethod.GET, "/users").hasRole("ADMIN")
.anyRequest().authenticated();
}

// Inspiration: https://spring.io/blog/2015/06/08/cors-support-in-spring-framework#comment-2416096114
@Override
public void configure(WebSecurity web) throws Exception {
web
.ignoring()
.antMatchers(HttpMethod.OPTIONS, "/**");
}
}

我的AuthenticationConfiguration如下
@Configuration
@EnableResourceServer
public class AuthenticationConfiguration extends GlobalAuthenticationConfigurerAdapter {
private final UserDetailsService userService;
private final PasswordEncoder passwordEncoder;

public AuthenticationConfiguration(UserDetailsService userService, PasswordEncoder passwordEncoder) {
this.userService = userService;
this.passwordEncoder = passwordEncoder;
}

@Override
public void init(AuthenticationManagerBuilder auth) throws Exception {
auth
.userDetailsService(userService)
.passwordEncoder(passwordEncoder);
}
}

我的 AuthorizationServerConfiguration 如下
@Configuration
@EnableAuthorizationServer
public class AuthorizationServerConfiguration extends AuthorizationServerConfigurerAdapter {
private final AuthenticationManager authenticationManager;

public AuthorizationServerConfiguration(AuthenticationManager authenticationManager) {
this.authenticationManager = authenticationManager;
}

@Override
public void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception {
endpoints.authenticationManager(authenticationManager);
}

@Override
public void configure(ClientDetailsServiceConfigurer clients) throws Exception {
clients
.inMemory()
.withClient("html5")
.secret("password")
.authorizedGrantTypes("password")
.scopes("openid");
}
}

我很乐意发布我的用户服务和其他内容。但一切似乎都在 hasRole 旁边工作和 Principal加载了正确的权限(角色)。但是请让我知道我是否应该发布更多代码。

完整的源代码可以在 here找到.

最佳答案

您是否尝试过使用“ROLE_ADMIN”而不仅仅是“ADMIN”?看看这个以供引用:

Spring security added prefix "ROLE_" to all roles name?

关于spring - hasRole 总是返回 403,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43704951/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com