【发布时间】: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 如何成为不记名令牌?
任何不错的文章/视频/有效分布式身份验证解决方案示例的链接的奖励积分!
【问题讨论】:
-
你可以看看这里:stackoverflow.com/questions/40375508/… JWT 可以用于很多事情,其中包括不记名令牌,即您可以向某些服务提供的一条信息,凭借你拥有它(你是“承载者”)授予你访问某些东西的权限。
-
因此矛盾!我用令牌调用服务 X。服务 X 使用令牌调用服务 Y。如果它是一个不透明的令牌,很好。如果是 JWT,那么其中一项服务就违反了规则(因为它们不能同时成为目标受众)。
标签: oauth-2.0 jwt microservices openid-connect