当前位置: 首页 > 知识库问答 >
问题:

JWT接入令牌:一个矛盾?

姚培
2023-03-14

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

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

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

我读过访问令牌是JWT是可以的。

很棒,但是:

我的(道德?)问题是:

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

不记名令牌是不针对特定受众的。因此,如果我发行一个令牌,表明不记名者可以阅读我的邮件,它可以通过六种不同的服务,其中任何一种都应该能够阅读我的邮件。

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

任何优秀文章/视频/有效分布式身份认证解决方案示例的链接均可获得加分!

共有1个答案

段干华皓
2023-03-14

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

无记名令牌也是如此。它可以被任何人传递,但只有观众应该根据它的有效性采取行动。

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

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

 类似资料:
  • 我正在尝试与URL(python客户端)建立websocket连接,该URL需要传入jwt令牌,服务器(在GO中实现)在上侦听该请求,并应该通过解析令牌进行身份验证。 我试着用这部分代码来提出请求- 此请求命中运行此代码以验证此请求的服务器 func ParseFromRequest(req*http.Request,keyFunc-keyFunc)(令牌*令牌,错误){ } 每次,我都会得到“E

  • 我们正在使用JWT Nuget来创建和验证令牌。下面是我们用来创建令牌的代码 我的理解是,这不会加密令牌,因为我能够通过访问jwt.io解析令牌,并且能够读取内容。我想加密令牌,这样它就不应该被解析。我在JWT Nuget中找不到任何可以加密令牌的方法。 那么如何使用JWT nuget对令牌进行签名和加密呢? 编辑: 我知道JWT不需要任何加密,因为只有经过身份验证的用户才能读取令牌,这意味着,我

  • 我已经验证了JWT令牌,它在会话存储中。 计算机1以普通用户身份登录计算机2以管理员身份登录 如果我在会话存储中将机器1 jwt令牌替换为机器2,并且如果我进一步调用api,服务器应该说未经授权的访问。

  • 我想从Stormpath帖子中对JWT令牌和CSRF提出疑问,这些令牌和CSRF解释了将JWT存储在localStorage或Cookie中的优缺点。 [...] 如果您使用JS从cookie中读取值,这意味着您不能在cookie上设置Httponly标志,因此现在站点上的任何JS都可以读取它,从而使其与在localStorage中存储内容的安全级别完全相同。 我试图理解为什么他们建议将xsrfT

  • 我正在构建一个使用JWT进行身份验证的应用程序。我开始做一些研究,但对于诸如刷新令牌和令牌存储之类的主题缺乏共识,我感到惊讶。 据我所知,JWT和OAuth是两个不同的协议,它们遵循不同的规范。 但我的问题是,对于一个没有通过第三方资源服务器如Google、Facebook等认证的应用程序,有一个刷新令牌真的有用吗?为什么不让JWT令牌像刷新令牌一样持续时间长。 另一方面,我可以看到,如本文所述,

  • 我很难让Auth0以JWT格式返回访问令牌。我需要JWT格式的文件,以便使用javajwt库验证它们。 我正在使用Auth0登录,并使用获取访问令牌-我尝试将访问群体设置为我们的API标识符(在多个位置,包括lock auth参数和负载),但没有成功-返回访问令牌,但不是JWT。 或者,是否有用于验证“本机”Auth0访问令牌的Java库? 返回的代码用于POST到