【问题标题】:OAuth 2.0 on REST API with Third party providerREST API 上的 OAuth 2.0 与第三方提供商
【发布时间】:2019-03-31 12:54:52
【问题描述】:

我是 OAuth 2.0 的新手,我正在尝试使用第三方 OAuth 提供程序开发一个应用程序,该提供程序具有授权代码授予流程,如 ny Authorization Server 和 Spring Security。 这个提供者给了我两个端点/authorize/token,这两个端点,在用户授权其访问后,将返回一个访问令牌。

到目前为止,我已经保护了“/”端点,因此应用程序将用户重定向到授权页面,然后在回调端点中存储令牌,以便每个请求中的过滤器都可以对其进行验证。

但是,由于应用程序主要是一组 REST API,我们希望能够使用 Postman 对其进行测试,也就是说,在 Postman 上,我通过将授权设置为 OAuth 2.0 并请求令牌来获取令牌直接来自第三方端点,但由于 Postman 有自己的回调 URI,我的应用程序不存储生成的令牌。

所以,我的两个问题是:

  1. 使用 /callback 端点存储令牌并在每个请求之前通过过滤器对其进行验证是常用的方法吗?
  2. 要使用 Postman,我应该创建一个端点来存储在应用程序上下文之外生成的令牌,还是应该创建自己的授权服务器作为该第三方 AS 之上的附加层?

【问题讨论】:

    标签: oauth-2.0 spring-security-oauth2


    【解决方案1】:

    由于您的应用程序是一组 REST API,因此您需要将其设置为资源服务器(就 OAuth2 而言)。
    资源服务器本身不执行身份验证,它仅验证来自 Authorization 标头 (Resource Server in a nutshell) 的令牌。

    您可以在 Spring Security 示例中找到示例:oauth2resourceserver

    【讨论】:

    • 感谢 OAuth 链接,它解释了很多,但看起来,OAuth 规范并没有具体说明授权服务器是否应该提供令牌验证端点。话虽这么说,当使用浏览器时,我可以存储在 redirectUri 中发送的令牌并存储在数据库中并在每次请求时检查它,但是,当我使用邮递员对其进行测试时,它有自己的回调 Uri,因此,我如何检查令牌的有效性?还是我使用 Postman 错误?
    【解决方案2】:

    我最终得出结论,我一直在错误地使用 Postman。 所以,到最后,我们得到了用户登录时保存在数据库中的 Token,然后,将它返回给调用者,无论是前端应用程序,还是 Postman 本身。 然后,在对 API 的每次调用中,调用者都应在标头中包含令牌作为授权,并且 Spring 上的过滤器将根据数据库检查令牌。

    【讨论】:

      猜你喜欢
      • 2013-11-19
      • 2012-01-03
      • 2014-09-11
      • 2017-12-26
      • 1970-01-01
      • 1970-01-01
      • 2022-11-22
      • 2014-07-30
      • 2021-09-20
      相关资源
      最近更新 更多