服务鉴权原理
最近更新时间: 2024-10-17 17:10:00
服务鉴权是处理微服务之间相互访问权限问题的解决方案。配置中心下发鉴权规则到服务,当请求到来时,服务根据鉴权规则判断鉴权结果,如果鉴权通过,则继续处理请求,否则返回鉴权失败的 HTTP 状态码403(Forbidden)。
鉴权原理
鉴权流程如下:
服务鉴权功能支持白名单和黑名单两种鉴权方式。
白名单:当请求匹配任意一条鉴权规则时,允许调用;否则拒绝调用。
黑名单:当请求匹配任意一条鉴权规则时,拒绝调用;否则允许调用。
以下视频将为您介绍 TSF 服务鉴权原理:
多个鉴权规则
一个服务可能有多个鉴权规则,多个鉴权规则之间是逻辑或(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 时,因为不匹配规则,服务允许调用。