3

当您向 OIDC 提供者进行身份验证时,您将获得一个 id 令牌,如果您为 API 指定了范围,您将获得一个访问令牌,以便客​​户端应用程序可以代表最终用户向受保护的资源发出请求。通常,访问令牌也是 JWT。

但是如何阻止某人欺骗这些访问令牌之一,并创建一个并将其传递给 API?我知道有防止修改的保护措施,因为签名将不同于任何验证逻辑的预期,但是如果恶意用户手动创建了一个全新的签名呢?特别是因为这些令牌可以通过任何需要访问令牌的 API 进行“就地”验证(并非所有 API 都使用自省端点……尤其是使用 JWT)。我确实了解 OpenID Connect 提供商的 JWT 签名密钥周围有元数据,并且它在 OIDC 发现文档中可用。例如,这里是Google 的 JWK 元数据. 鉴于您拥有公开可用的签名信息,并且无需向 OIDC 提供商提出任何请求即可验证 JWT 访问令牌,那么 JWT 的安全性如何?是什么阻止了人们创建一个令牌并将其作为不记名令牌传递给需要访问令牌的 API?

4

1 回答 1

7

但是如何阻止某人欺骗这些访问令牌之一,并创建一个并将其传递给 API?

如果没有用于签名原始 JWT 的私钥(假设您使用的是 RS256 等非对称签名算法),签名的欺骗和重建几乎是不可能的。

通过 OIDC 发现文档获得的 JWK 信息仅包含公钥。

还使用 HTTPS 进行授权/令牌交换以避免令牌嗅探。

于 2017-11-01T03:22:32.630 回答