首页 > 解决方案 > 资源服务器应如何验证授权服务器颁发的 oauth 不记名令牌?

问题描述

假设我有一个授权服务器 (AS),它应该产生access_token,并且我有另一个资源服务器 (RS),它为我的受保护资源提供服务。

我想知道 RS 应该如何验证access_tokenAS 生成的内容?

我的困惑是,AS 应该有其签名的秘密方式access_token,这不意味着其他人共享或知道,在这种情况下,RS 不应该知道 AS 是如何生成 thisaccess_token的。

在这种情况下,RS 应该如何验证收到的令牌并确保令牌来自已识别的 AS?相反,验证 RS 上收到的令牌不应该是 AS 的责任吗?但是如果是这样的话,它不会面临任何性能瓶颈,因为对 RS 的每个 API 调用都需要额外的跳转到 AS 来验证令牌?

标签: securityauthenticationoauth-2.0jwtopenid-connect

解决方案


正如您所说的 Isaac,有些人(包括我自己)更喜欢将令牌验证从 API 外部化,并要求授权服务器来完成这项工作。我认为这是最干净的选择,因为:

  • 它将您所有 API 的安全代码外部化
  • 可以在不影响 API 的情况下更改令牌签名密钥或算法

这可以通过自省来实现,这通常还涉及缓存结果(声明)。这就是很多 API 网关解决方案的工作原理,但您也可以很容易地自己编写代码。

我的一些相关资源:

Tore 描述的技术也是完全有效的,如果授权服务器不支持自省,则需要此技术。


推荐阅读