将解码的 JWT 有效负载传递给微服务
Posted
技术标签:
【中文标题】将解码的 JWT 有效负载传递给微服务【英文标题】:Pass decoded JWT payload to micro services 【发布时间】:2018-03-17 22:58:39 【问题描述】:我们正在更改我们的应用程序身份验证架构以切换到 Json Web Token。
实际上,传入的请求首先通过一个 API 网关,该网关将请求分派到我们堆栈的各种微服务。
每个请求中传递的 JWT 的认证和验证都是在网关中完成的。
认证后你会用 JWT 做什么?
-
将其“原样”传递给后续微服务?
在网关中对其进行解码,仅将解码后的有效负载传递给服务?
我看到两种解决方案的优缺点:
专业人士:我们一直保留一个标准的 Authentification http 标头。 缺点:我们必须在每个服务中解码令牌。
专业人士: Token 已经解码并可以直接在服务中使用。 缺点:我们必须使用非标准的 http 标头来传递解码后的有效负载。
在这种情况下有什么“标准”方式吗?
你有什么意见?
谢谢!
【问题讨论】:
将 JWT 保存在 cookie 中。默认情况下,它在每个请求中作为标头传递给服务器。然后您可以在服务器请求处理程序中对其进行解码。 令牌将存储在客户端(SPA 应用程序)的 cookie 中,并在每次请求时传递给 API 网关。网关将对其进行验证并接受/拒绝请求。如果请求被接受,令牌将被传递到底层微服务。我的问题是:身份验证后,我应该将 JWT 令牌直接传递给服务,还是只传递解码的 JWT 有效负载?我知道两者都可以,但我想知道是否有任何“最佳实践”。 【参考方案1】:按原样传递 JWT。解码的开销可以忽略不计,但如果您的网关因某种原因被绕过,您可以使系统更加安全。或者,也许您将来决定直接与您的微服务通信。
【讨论】:
以上是关于将解码的 JWT 有效负载传递给微服务的主要内容,如果未能解决你的问题,请参考以下文章