Aft*_*ess 1 authentication authorization api-key jwt microservices
我的微服务将以两种方式调用: 1. 由公共网站的未经身份验证的用户调用。2. 通过内部 UI 的经过身份验证的用户来执行管理功能。
我计划使用 OIDC 和 JWT 令牌来验证管理员用户从管理 UI 发出的 API 调用。该令牌中将包含声明,微服务将使用该声明来确定用户是否有权访问此 API。
我计划使用面向公众的网站上的 API 密钥来进行未经身份验证的用户进行的 API 调用。微服务将验证 API 请求标头中的 API 密钥,以确定 API 调用是否来自可信来源。
问题
小智 5
是的,微服务有责任验证 API 密钥和 JWT 令牌,除非您使用服务网格。
如果您有许多微服务都直接交互(发送/接收调用、发现新实例等),那么微服务需要执行此验证。这意味着每个服务都需要使用框架/库来实现验证逻辑(或复制粘贴代码,这在某些情况下确实有意义)。他们还需要分发和轮换 JWT 公钥。
但是,如果您使用代理/服务网格来处理网络调用,那么您可能可以将其委托给代理来处理。例如,Envoy 代理包含一个jwt 过滤器,可以在网络层进行 JWT 解码。根据您的架构和服务设计,在代理层中处理解码可能比您自己实现要容易一些。不过,这里有一些权衡,因为您需要部署和维护代理,并可能重新设计您的应用程序,以根据代理设置的标头或 cookie 解析决策(是/否、管理员/未经身份验证的用户)。
归档时间: |
|
查看次数: |
1013 次 |
最近记录: |