无法在Spring Boot中访问不安全的端点

丹尼斯·斯蒂芬诺夫(Denis Stephanov):

在我的控制器中,我有两个端点,其中一个是安全的,另一个是公共的:

@GetMapping("/public")
public String getPublic() {
    return "public";
}

@PreAuthorize("hasRole('USER')")
@GetMapping("/private")
public String getPrivate() {
    return "public";
}

仅当我登录并且将具有正确角色的令牌放置在请求标头中时,安全端点才起作用。但是,当我想访问没有令牌的公共端点时,我总是会收到错误的状态401

需要完全身份验证才能访问此资源

这是我的安全配置:

@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    public void configure(HttpSecurity http) throws Exception {
        http
            .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)
            .and()
            .authorizeRequests().anyRequest().authenticated()
            .and()
            .csrf().disable();
    }
}

和授权服务器配置:

@Configuration
@EnableAuthorizationServer
public class OAuth2AuthorizationServerConfig extends AuthorizationServerConfigurerAdapter {

    private final UserDetailsService appUserDetailService;

    private final AuthenticationManager authenticationManager;

    @Override
    public void configure(AuthorizationServerEndpointsConfigurer endpoints) {
        endpoints
                .tokenStore(tokenStore())
                .tokenEnhancer(tokenEnhancer())
                .authenticationManager(authenticationManager)
                .userDetailsService(appUserDetailService);
    }
}

我也尝试.authorizeRequests().anyRequest().authenticated()对此.authorizeRequests().anyRequest().permitAll()进行更改没有更改。我的首选方式是使用批注处理安全性。谢谢。

Supun Wijerathne:

您有两个选择,可以选择两个。

选项1:在您的端点中,像这样进行更改。

@PreAuthorize("permitAll()")  
@GetMapping("/public")
public String getPublic() {
    return "public";
}

并更改您的configure(HttpSecurity http)方法,这样做。

@Override
public void configure(HttpSecurity http) throws Exception {
    http
        .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)
        .and()
        .authorizeRequests()
        .anyRequest().permitAll()
        .and()
        .csrf().disable();
}

选项2:在您的configure(HttpSecurity http)方法中,就像这样。

@Override
public void configure(HttpSecurity http) throws Exception {
    http
        .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)
        .and()
        .authorizeRequests()
        .antMatchers("/public").permitAll()  
        .anyRequest().authenticated()
        .and()
        .csrf().disable();
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

无法在单个Oauth安全的Spring控制器中拥有安全和不安全的端点

Spring Security 401在不安全的端点上未经授权

由于本地主机不安全错误,Spring Boot Swagger REST 服务器在端口 6000 无法访问

Swift:无法在数组中存储不安全指针

绕过CAS以从Spring Boot应用程序获取不安全的健康信息

在我的旅馆中连接了不安全的wifi连接,但连接时显示“身份不明的网络无法访问互联网”

无法在 QWebEngineView 中登录 google:此应用可能不安全

如何在Spring Security OAuth中修复不安全的jwt-set-uri?

无法对不安全的表单执行 sql 注入

不安全的代码无法在Visual Studio 2015上编译

为什么 web.config 文件会因 CSP 中的不安全内联而抛出无法识别的错误?

在Kubernetes Pod中访问Spring Boot Controller端点

链接请求不安全的 XMLHttpRequest 端点

VueJS请求了不安全的XMLHttpRequest端点

Spring Boot 中的 Spring 安全配置无法按预期工作

在经典ASP中访问线程不安全的COMobject

使用spring-ws的spring-boot-无法访问SOAP端点

将安全保护级别设置为不安全时无法获取缓存

Spring Boot安全配置忽略允许的端点

Spring Security WebSecurityConfig需要安全区域和不安全区域

Spring Boot Admin Server无法访问端点(未经授权的401)

不安全的反射访问与toCharArray(性能)

Spring Boot:无法配置

我可以在Docker for Mac中为Kubernetes API使用不安全的端点吗?

Ansible 无法使用流浪不安全的公钥 ping 我的流浪盒子

为什么无法在Symfony的不安全区域中清除会话?

软件包:无法下载,http://*.com/*/*.git使用不安全的协议

无法使用不安全的私钥SSH到无用的VM(无用1.7.2)

无法运行系统后台程序:不安全的X窗口授权