服务鉴权使用说明

最近更新时间:2024-02-06 09:53:01

我的收藏
使用鉴权功能时,用户需要先在客户端配置依赖项,然后在 TSF 控制台设置鉴权规则。

步骤1:配置依赖项

对于 Spring Cloud 应用,请参见开发指南中的 服务治理
对于 Mesh 应用,无须额外配置。

步骤2:设置鉴权规则

1. 登录 TSF 控制台
2. 在左侧导航栏选择 服务治理,单击目标服务的“ID”,进入服务详情页。
3. 在页面上方选择服务鉴权页签,鉴权方式选择不启用,单击新建鉴权规则,填写鉴权规则和生效状态。
规则名称:填写服务鉴权规则名称。
类型:选择鉴权类型。
鉴权标签:支持系统标签自定义标签两种类型,详细说明请参见系统与自定义标签
生效状态:开启后,此条鉴权规则将开始生效。


4. 单击完成,返回服务鉴权规则列表页面,选择鉴权方式开启鉴权功能。
不启用:关闭鉴权功能。
白名单:服务放行匹配鉴权规则的请求调用。
黑名单:服务拒绝匹配鉴权规则的请求调用。

步骤3:(可选)切换鉴权方式

用户可以通过控制台,从一种鉴权模式切换到另外一种鉴权模式。
不启用切换到白名单(或者黑名单):开启鉴权功能,选择已生效鉴权规则对应的鉴权方式。
说明
至少有一条规则确认生效后,才能开启对应的鉴权方式。例如只有一条黑名单规则生效,则只能切换到黑名单鉴权方式,不能切换到白名单鉴权方式。



白名单切换到黑名单(或黑名单切换到白名单):不能直接切换,需要先切换到不启用,生效一条黑名单(白名单)规则后,才能切换到黑名单(白名单)。
白名单(或黑名单)切换到不启用:关闭鉴权功能。

步骤4:验证鉴权效果

以官网 Demo(包含一个 provider-demo 应用和一个 consumer-demo 应用)为例说明如何验证鉴权功能。
consumer-demo 中已包含鉴权依赖 jar 包,因此这里只需要说明在控制台上创建鉴权规则用来限制特定 API 的调用。consumer-demo 中提供了三个 API /echo-rest/{str}/echo-async-rest/{str}/echo-feign/{str}
参见 部署 Spring Cloud TSF 应用 将官网 Demo 部署到 TSF 平台后,在控制台上新建鉴权规则,类型选择白名单,鉴权规则的标签表达式如下:


创建好规则后,登录云服务器,使用 curl 命令来验证鉴权是否生效。其中 <IP> 为云服务器的IP,在云主机列表页面获取;<PORT> 为主机端口,在部署组基本信息页面的服务访问模块获取。
命令
预期
curl IP:PORT/echo-rest/hello?user=test
正常返回
curl IP:PORT/echo-async-rest/hello?user=test
返回鉴权失败
curl IP:PORT/echo-feign/hello?user=test
返回鉴权失败

限制说明

等于、不等于、包含、不包含属于严格匹配,正则表达式属于模糊匹配。因此当系统标签是被调方 API PATH 时,目前仅支持使用正则表达式的逻辑关系来匹配带参数的 API 请求。 例如标签的逻辑关系是正则表达式,值填写 /echo/.*,可以匹配带参数的请求 /echo/test123 (其中 test123 是参数);当标签的逻辑关系是等于、不等于、包含、不包含关系,值是 /echo/{param}时,不能匹配带参数的请求 /echo/test123 (其中 test123 是参数)。