带有第三方提供商的REST API上的OAuth 2.0

时间:2019-03-31 12:54:52

标签: oauth-2.0 spring-security-oauth2

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

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

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

所以,我对此有两个疑问:

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

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

我最终得出结论,我一直都在错误地使用Postman。 因此,最后,当用户登录时,我们将令牌保存在数据库中,然后将其返回给调用方,无论是前端应用程序还是Postman本身。 然后,在每次对API的调用中,调用者应在标头上包含令牌作为Authorization,并且Spring上的Filter会对照数据库检查该令牌。