Spring Security Oauth2摇摇

时间:2018-11-26 23:37:31

标签: spring spring-boot spring-security spring-security-oauth2 swagger-ui

我正在尝试在资源服务器上配置Swagger身份验证,以便可以针对我的授权服务器进行身份验证。

我将资源服务器和授权服务器分开。它们都在我的本地主机上以不同的端口启动。

  • 端口8083上的资源服务器
  • 端口8081上的授权服务器

每当我尝试“授权”时,都会出现CORS问题。

我从另一个网站分叉了一个项目,用作我的测试依据。下面是分叉的项目。

https://github.com/cbriarnold/oauth2-spring-boot-2.0.2

要进行测试,一旦授权服务器和资源服务器都启动,请执行以下操作:

  1. 转到http://localhost:8083/swagger-ui.html
  2. 单击“授权”按钮
  3. 单击对话框中的“授权”按钮

如果打开了开发人员工具,您将看到CORS错误

  

从原点“ http://localhost:8081/oauth/token/”到“ http://localhost:8083”的提取操作已被CORS策略阻止:对预检请求的响应未通过访问控制检查:预检请求不允许重定向

与上述CORS错误相关的http状态代码为302。

因此,我修改了源代码以尝试允许allowAll(从安全角度来看,我知道这是不希望的,但我只是想弄清楚发生了什么事情)。我将收到相同的CORS错误,但HTTPS状态码为403。该代码位于以下分支。

https://github.com/cbriarnold/oauth2-spring-boot-2.0.2/tree/permitAll

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

我认为您需要在控制器上添加@CrossOrigin(/*your hitting server*/)

这是一项chrome安全性检查,以查看您是否被允许与该服务器通信,它首先会发送一个选项请求,如果被允许,它会发送原始请求,该请求正在访问swagger

如果您想确定这是否是跨源问题,请尝试通过邮递员发送该请求,因为邮递员首先直接发送您的请求而没有选项请求