微服务架构中的身份验证和授权

Murillio4

我有多种服务:

  • 用户
  • 发布
  • 评论
  • 认证方式
  • GraphQL端点

并说它们像这样连接在一起:

例子1

所有服务均通过封闭网络上的gRPC进行通信,并且授权使用jwt令牌完成

方法1:graphql服务负责用户身份验证,并确保授权用户运行指定的过程。服务之间没有用户身份验证,但是有TLS身份验证。服务不执行任何授权检查。

方法2:每个服务都确保用户被授权运行特定的过程。例如,在需要签名且声誉超过15的帖子上投票。在这里,邮政服务责任是检查用户是否已登录(已验证)以及用户是否有权投票。由于每个过程调用都需要通过Auth服务检查用户身份验证和授权,因此这将导致大量开销。

有没有一种更好的方法可以保留方法2的安全性,却又像方法1那样产生少量开销?

-----更新-----

方法3:与方法2相同,但是用户身份验证仅在GraphQL服务中使用Auth服务进行。通过检查传递给Arround的元数据来完成授权。服务之间存在TLS身份验证。

用户名

让我们考虑一个请求,该请求从经过身份验证的用户传递到服务A,再传递到服务B。JWT应该在这些调用中的每一个上传递。

两种服务都将首先对用户进行身份验证,这只需通过验证JWT即可完成。然后,每个服务将从用户那里提取授权用户所需的所有信息,例如sub声明。它将使用此信息来确定用户是否有权代表服务执行该服务。只有获得成功的授权,服务才能真正执行任何操作。

这不是开销,而是允许服务B认证和授权用户所必需的。不将JWT从服务A传递到服务B,将使服务B无法了解有关用户的任何信息。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

微服务中的身份验证和授权

如何在微服务架构中进行身份验证和授权

微服务和 api-gateway 架构中的输入和身份验证验证

微服务架构中用户服务和身份验证服务之间的通信

使用微服务和网关进行身份验证和授权

如何在微服务架构中对服务之间的异步事件消息进行身份验证

微服务架构中的Docker容器之间的身份验证,绕过JWT身份验证进行内部调用

使用 vert.x 在微服务架构中实现身份验证的更好方法

如何在微服务和API网关体系结构中对不同的配置文件进行身份验证和授权

MVC中的身份验证和授权

如何使用 azure Ad 和 .net core 处理微服务中的身份验证?

您应如何处理微服务中的身份验证和共享用户信息?

Kubernetes 中微服务之间的身份验证

基于微服务的环境中的Keycloak身份验证流程

MVC5中的身份验证和授权

Ajax调用中的身份验证和授权

Cadence/Temporal 中的身份验证和授权

从另一个服务(微服务架构)对Flask单元测试客户端进行身份验证?

微服务认证/授权架构

微服务身份验证最佳做法和安全性(OAuth 2.0和OpenIdConnect)

调用现有服务的新网站的最佳架构(具有身份验证和授权的 ASP.NET Web API)

WebSocket的身份验证和授权的春天

.Net身份验证和授权

EJB身份验证和授权

Firebase身份验证和授权

Java身份验证和授权

如何在微服务架构中使用第三方IDP实施OpenID Connect身份验证

如何获取和使用JHipster微服务JWT的身份验证令牌

微服务-如何解决安全性和用户身份验证?