首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在微服务体系结构中处理服务到服务身份验证的快速解决方案

在微服务体系结构中处理服务到服务身份验证的快速解决方案
EN

Stack Overflow用户
提问于 2020-04-26 06:05:43
回答 2查看 941关注 0票数 0

我是微服务和身份验证的新手,我正在尝试理解如何以尽可能少的开发工作在微服务体系结构中实现身份验证。

据我所知,微服务架构中有两种可能的身份验证场景:

1)用户想要访问其中一个微服务

2)其中一个微服务想要访问另一个微服务

我已经了解了用户如何通过JWT访问其中一个微服务,在我看来,实现这一点的最快方法是使用IdaaS产品,如AWS Cognito或Google Cloud Identity Platform。

不过,我正在努力理解如何解决微服务到微服务身份验证部分。

假设用户通过JWT访问微服务A。此时,微服务A需要访问微服务B,然后微服务B需要访问微服务C。服务A、服务B和服务C之间的鉴权如何处理?实现这一点的最快方法是什么?我可以再次使用类似AWS Cognito的工具吗?多么?

提前感谢你的回答。

EN

回答 2

Stack Overflow用户

发布于 2020-04-27 11:32:15

您应该使用OAuth 2.0客户端凭据授予。此流用于服务到服务身份验证。每个服务将使用自己的凭据从令牌服务获取令牌,并使用该令牌调用另一个服务。

票数 1
EN

Stack Overflow用户

发布于 2021-03-26 10:34:46

一些服务网格解决方案通过mTLS例如Istio提供服务到服务的认证。

另一种方法是为您的服务使用另一个JWT。服务A将发出自己的JWT并将其发送给服务B。服务B确保声明是有效的(例如,iss代表服务A,aud代表服务B,令牌尚未重放,等等)。如果一切正常,服务B将发出自己的令牌,并将其发送到服务C,服务C也将验证该令牌。

重要信息:

RFC Proof of Posession Key for JWTs

我个人更喜欢使用非对称密钥来证明拥有: JWT必须由只有发行者知道的私钥来签名。所以这件事应该保密。应该将公钥共享给其他服务,以便它们可以验证JWT签名。

我是如何实现它的:呈现者(发送请求的服务)也是颁发者(发出JWT)。用于签署JWT的密钥(例如Google应用程序凭据)是从我的云提供商处下载的。云提供商充当密钥管理器,并具有JWKs端点,在该端点中,可以通过密钥ID获取和查找颁发者的公钥。接收方(接收和验证请求的服务)将从云提供商(密钥管理器)获取公共密钥,并将验证JWT。

注意:您必须理解并利用JWT声明来加强安全性。

注2:根据具体情况,密钥管理可能比较复杂。您需要有一个密钥轮换策略,以使事情更安全。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61433192

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档