java - 如何防止Spring Security OAuth2中多次查询API出现异常

标签 java spring-boot spring-security oauth-2.0 spring-security-oauth2

我正在开发一个 REST 应用程序。 使用 Spring Security 开箱即用的 oauth2 授权。

但是当当前授权cookie已过期或删除并且对各种api的许多请求并行执行时,就会出现问题。 例如:

/api/books
/api/categories
/api/authors

这三个请求异步发送后,这些请求将被重定向到授权。

结果,我得到了这张图片:

/api/books
/api/categories
/api/authors
http://127.0.0.1:8081/login
http://127.0.0.1:8081/login
http://127.0.0.1:8081/login
http://127.0.0.1:8081/oauth/authorize?client_id=client&redirect_uri=http://127.0.0.1:8081/login&response_type=code&state=9PO7rO
http://127.0.0.1:8081/oauth/authorize?client_id=client&redirect_uri=http://127.0.0.1:8081/login&response_type=code&state=d2O7j1
http://127.0.0.1:8081/oauth/authorize?client_id=client&redirect_uri=http://127.0.0.1:8081/login&response_type=code&state=9541sf
http://127.0.0.1:8081/login?code=w7lmSA&state=9PO7rO (one of these queries returns status 401)
http://127.0.0.1:8081/login?code=gf41sd&state=d2O7j1 (one of these queries returns status 401)
http://127.0.0.1:8081/login?code=kj74sx&state=9541sf (one of these queries returns status 401)

事实证明,最后三个查询之一始终包含状态 401 的错误(消息:“身份验证失败:无法获取访问 token ”)

我不明白为什么会发生这个错误。

您能澄清一下在这种情况下需要做什么吗? spring本身能解决这个问题吗?可能需要以某种方式进行额外配置。

最佳答案

我是如何解决这个问题的:

  1. 在 application.properties 中禁用异步处理:
security.filter-dispatcher-types=REQUEST, ERROR
  • 在 WebSecurityConfigurerAdapter 中禁用 sessionFixation

    @配置 公共(public)类 SecurityConfiguration 扩展 WebSecurityConfigurerAdapter { @覆盖 公共(public)无效配置(HttpSecurity http)抛出异常{ //... http.sessionManagement() .sessionFixation() 。没有任何(); } }

  • 关于java - 如何防止Spring Security OAuth2中多次查询API出现异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57693972/

    相关文章:

    java - 清洁代码以在 Spring @PatchMapping 中对域类进行部分修补?

    java - 使用@PreAuthorize时的安全配置

    java - Spring Security验证用户进入admin

    grails - Spring Security Core插件的默认登录页面在哪里?

    java - 自动售货机,输入变量无法识别以进行计算

    java.lang.ClassCastException 在远程服务器上的 spark 作业中使用 lambda 表达式

    java - 如果时钟更改/调整,我可以收到通知吗?

    java - 从 Spring Boot 应用程序中排除 @Configuration

    java - 使用 Spring Boot Maven 着色无法正常工作

    java - 如何将十六进制字符串转换为字节数组?