服务鉴权原理

最近更新时间: 2024-10-17 17:10:00

服务鉴权是处理微服务之间相互访问权限问题的解决方案。配置中心下发鉴权规则到服务,当请求到来时,服务根据鉴权规则判断鉴权结果,如果鉴权通过,则继续处理请求,否则返回鉴权失败的 HTTP 状态码403(Forbidden)。

鉴权原理

鉴权流程如下:

服务鉴权功能支持白名单和黑名单两种鉴权方式。

  • 白名单:当请求匹配任意一条鉴权规则时,允许调用;否则拒绝调用。

  • 黑名单:当请求匹配任意一条鉴权规则时,拒绝调用;否则允许调用。

以下视频将为您介绍 TSF 服务鉴权原理:

https://cloud.tencent.com/edu/learning/quick-play/2038-24377?source=gw.doc.media&withPoster=1&notip=1

多个鉴权规则

一个服务可能有多个鉴权规则,多个鉴权规则之间是逻辑或(OR)的关系,只要请求满足任意一条鉴权规则,就相当于匹配成功。

示例说明

示例1

需求:服务 provider-demo 只允许来自 consumer-demo 服务带有 user=foo 的自定义标签的请求调用。 解决方案:要满足上面的鉴权需求,用户可以在 provider-demo 的鉴权页面,设置鉴权方式为白名单,鉴权规则如下图(注意最后要将生效状态改为生效): 结论:要满足 逻辑与 AND (既满足条件 A ,又满足条件 B)时,需要使用标签表达式。

示例2

需求:服务 provider-demo 只允许来自 consumer-demo 服务带有 user=foo 的自定义标签的请求调用。 解决方案:要满足上面的鉴权需求,用户可以在 provider-demo 的鉴权页面,设置鉴权方式白名单,创建2条鉴权规则,如下图: 结论:要满足 逻辑与 OR (满足条件 A 或 条件 B)时,需要使用多条鉴权规则。

说明

白名单鉴权方式示例: 鉴权规则内容是 username 等于 foo,当请求中带有 username=foo 的 tag 时,因为匹配规则,服务允许调用;当请求中带有 username=bar 的 tag 时,因为不匹配规则,服务拒绝调用。

黑名单鉴权方式示例:鉴权规则内容是 username 等于 foo,当请求中带有 username=foo 的 tag 时,因为匹配规则,服务拒绝调用;当请求中带有 username=bar 的 tag 时,因为不匹配规则,服务允许调用。