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

What are the most common ways to Architect the verification process of the access tokens between resource and authentication server using OAUTH 2.0?

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

我正在尝试构建一个分解为一堆微服务的 Web 应用程序,每个微服务都是一个资源服务器。我还有一个单独的身份验证服务器,我想知道我在下面尝试过的哪种方法更好,或者如果您认为自己有更好的主意,那么我们将不胜感激,或者如果您认为 OAUTH 不是解决此问题的正确工具,请解释一下。

以下是我尝试过的方法。

假设用户(资源所有者)转到我的应用主页 http://helloworldhello.com。这个登陆页面有用户名和密码字段,所以一旦用户输入这些字段,我就会对身份验证服务器进行 ajax 调用,最终会在 TWO-LEGGED OAUTH FLOW 之后给我一个访问令牌。现在,我获取 oauth 访问令牌并转到资源服务器以访问资源。一旦身份验证服务器同意,资源服务器现在将以编程方式对身份验证服务器进行另一个 http 调用以验证访问令牌,然后资源服务器将为完成请求提供服务(这样资源服务器与身份验证过程完全隔离)

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

其中哪一个在行业中更常见?或者关于如何验证身份验证服务器和资源服务器之间的访问令牌的任何其他想法?

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

然后资源服务器将自行验证令牌。您所需要的只是共享相同的盐。

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

  • Header(哈希算法信息)
  • Body(数据)
  • 签名(验证)

令牌验证后,您可以从令牌中提取所需数据(例如用户 ID)body 并执行您的工作。

我不会详细介绍如何构建 JWT,他们在这方面有很多资源,但正确的方法是使用已经构建的库。

有一个即将完成的 RFC 指定并标准化了资源服务器可用于针对授权服务器验证访问令牌的协议,请参阅:https://datatracker.ietf.org/doc/html/draft-richer-oauth-introspection。这将是使用独立的 JWT 访问令牌的替代方法。