使用OAUTH 2.0构建资源和身份验证服务器之间访问令牌验证过程的最常用方法是什么?

时间:2015-10-16 20:34:28

标签: web-applications oauth oauth-2.0 google-oauth microservices

使用OAUTH 2.0构建资源服务器和身份验证服务器之间访问令牌验证过程的最常用方法是什么?

我正在尝试构建一个分解为一堆微服务的Web应用程序,每个微服务都是一个资源服务器。我也有一个单独的身份验证服务器,我想知道我在下面尝试的哪种方法更好,或者如果你认为你有更好的想法,那么非常感谢,或者你认为OAUTH不是正确的工具,请解释。 / p>

以下是我尝试过的方法。

说用户(资源所有者)转到我的应用主页http://helloworldhello.com。此登录页面具有用户名和密码字段,因此一旦用户输入这些字段,我就会对身份验证服务器进行ajax调用,最终将在TWO-LEGGED OAUTH FLOW之后为我提供访问令牌。现在我使用oauth访问令牌并转到资源服务器以访问资源。资源服务器现在将以编程方式对身份验证服务器进行另一次http调用,以便在身份验证服务器显示“是”后验证访问令牌,然后资源服务器将提供完成请求(这样资源服务器与身份验证过程完全隔离)< / p>

另一种方法是让资源服务器通过与共享数据库通信来验证访问令牌。

其中哪一项在业界比较常见?或者关于如何验证认证服务器和资源服务器之间的访问令牌的任何其他想法?

2 个答案:

答案 0 :(得分:3)

几乎完成了一个RFC,它指定并标准化资源服务器可用于验证针对授权服务器的访问令牌的协议,请参阅:https://tools.ietf.org/html/draft-richer-oauth-introspection。这将是使用自包含JWT访问令牌的替代方案。

答案 1 :(得分:1)

您可以使用JWT(JSON Web令牌)。

然后资源服务器将自我验证令牌。你所需要的只是分享同样的盐。

基本上,JWT分为3部分加密

  • 标题(散列算法信息)
  • 身体(数据)
  • 签名(用于验证)

在令牌验证之后,您可以从令牌主体中提取所需的数据(例如用户ID)并开始工作。

我不会详细介绍如何构建JWT,他们是相关的资源,但正确的方法是使用已经构建的库。