JWT 访问令牌:矛盾?

Posted

技术标签:

【中文标题】JWT 访问令牌:矛盾?【英文标题】:JWT access tokens: a contradiction? 【发布时间】:2019-09-19 11:22:18 【问题描述】:

我正在尝试为微服务架构实施安全解决方案。我的认证服务器支持 OAuth2 和 OIDC。

我试图弄清楚我是否可以在我的微服务之间传递 JWT 令牌,以避免不得不反复交换不透明的令牌来获取用户的声明。没有什么(实际的)可以阻止我这样做。我可以:

在进行调用时,使用我从身份验证服务器获取的 JWT(ID 令牌)作为不记名令牌。 每个服务都可以根据身份验证服务器的(缓存的)JWKS 验证该令牌,以确保其有效 每个服务都可以在其对其他服务的调用中包含令牌

我读过it's ok for an access token to be a JWT。

很好,但是:

我的(道德?)问题是这样的:

JWT 用于specific audience。事实上,规范基本上说,如果它不适合你,你应该拒绝它。

不记名令牌是intended to be non-audience specific。因此,如果我发出一个表示承载者可以阅读我的邮件的令牌,它可以通过六种不同的服务传递,其中任何一个都应该能够阅读我的邮件。

所以我的问题很简单,JWT 如何成为不记名令牌?

任何不错的文章/视频/有效分布式身份验证解决方案示例的链接的奖励积分!

【问题讨论】:

你可以看看这里:***.com/questions/40375508/… JWT 可以用于很多事情,其中​​包括不记名令牌,即您可以向某些服务提供的一条信息,凭借你拥有它(你是“承载者”)授予你访问某些东西的权限。 因此矛盾!我用令牌调用服务 X。服务 X 使用令牌调用服务 Y。如果它是一个不透明的令牌,很好。如果是 JWT,那么其中一项服务就违反了规则(因为它们不能同时成为目标受众)。 【参考方案1】:

JWT 面向特定受众。事实上,规范基本上说,如果它不适合你,你应该拒绝它。

不记名令牌也是如此。任何人都可以传递它,但只有观众才能对其有效性采取行动。

因此,服务 X 可以通过目标受众服务 Y 获得 JWT 不记名令牌。它不会基于此授予调用客户端任何授权,但使用它调用服务 Y 不会违反受众声明。违反受众声明的是,如果服务 X 验证 JWT,看到不匹配的受众并说“好吧,由于客户端有一个 JWT 声明它是用户 Fubar,我可以返回一些关于用户 Fubar 的信息。”。

不透明的非 JWT 不记名令牌的区别在于服务 X 无法滥用它...

【讨论】:

啊。当然。我误读了规范。令牌来自谁来自并不重要,但重要的是它去往。谢谢!

以上是关于JWT 访问令牌:矛盾?的主要内容,如果未能解决你的问题,请参考以下文章

jwt 访问令牌和刷新令牌流

访问令牌和刷新令牌困境 - JWT

JWT 访问令牌和刷新令牌安全性

OAuth 访问令牌是不是包含 JWT 令牌之类的角色

过期后使用刷新令牌获取访问令牌(JWT)

JWT 是不是总是需要访问令牌和刷新令牌?