OAuth 2.0 on REST API 与第三方提供商

OAuth 2.0 on REST API with Third party provider

我是 OAuth 2.0 的新手,正在尝试使用第三方 OAuth 提供商开发应用程序,授权代码授权流程作为 ny 授权服务器和 Spring 安全性。 该提供商给了我两个端点 /authorize/token,这两个端点在用户授权其访问后,将 return 一个访问令牌。

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

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

那么,我的两个问题是:

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

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

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

我最终得出的结论是,我一直都在错误地使用 Postman。 因此,到最后,我们在用户登录时获得了保存在数据库中的令牌,然后 return 将其发送给调用者,无论是 Front-end 应用程序还是 Postman 本身。 然后,在对 API 的每次调用中,调用者应在 header 上包含令牌作为授权,并且 Spring 上的过滤器将根据数据库检查令牌。