【问题标题】:Spring Security Oauth2 SwaggerSpring Security Oauth2 Swagger
【发布时间】:2019-04-28 15:56:03
【问题描述】:

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

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

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

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

我从另一个网站分叉了一个项目作为我的测试场地。下面是分叉的项目。

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

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

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

如果你打开了开发者工具,你会看到有CORS错误

CORS 策略已阻止从源“http://localhost:8083”获取“http://localhost:8081/oauth/token/”的访问权限:对预检请求的响应未通过访问控制检查:预检请求不允许重定向。

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

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

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

有什么建议吗?

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

    • 如何将 \@CrossOrigin 添加到 '/oauth/token/' 端点?它是作为 \@EnableAuthorizationServer 的一部分自动创建的。
    • 我把它全部发布在了 github 仓库中。授权服务器是运行 OAuth2 授权服务器的 Spring 自以为是的方法。因此,您不会在我的代码中看到控制器,因为代码已经由 Spring-Security 团队在 OAuth2 代码中生成。
    • 关于如何设置 Oauth2 Spring-security 实现的描述,我从中分叉了原始代码,可在此处找到medium.com/@akourtim.ahmed/…
    猜你喜欢
    • 2019-09-25
    • 2019-04-29
    • 2017-09-11
    • 2015-11-14
    • 2016-07-12
    • 2017-01-18
    • 2012-12-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多