服务认证

了解 dubbo3 服务认证

功能描述

像支付这样的安全敏感业务可能需要限制匿名调用。在安全增强方面,2.7.5 引入了基于 AK/SK 机制的认证和认证机制,并引入了认证服务中心。主要原理是,当消费者请求需要认证的服务时,会将 SK、请求数据、时间戳、参数等信息传递给服务端,生成对应的请求签名,通过 Dubbo 的 Attahcment 机制携带到对端进行签名验证,只有签名验证通过后才会进行业务逻辑处理。如下图所示

img

使用场景

如何使用

访问方式

  1. 用户需要在微服务网站上填写自己的应用信息,并为应用生成唯一的证书。

  2. 在管理网站上提交工单申请使用某个敏感业务服务的权限,由相应的业务负责人审批。审批通过后,会生成相应的 AK/SK 并发送到认证服务中心。

  3. 将证书导入到相应的应用并进行配置。配置方法也很简单,以注解方式为例

    服务提供者

    只需要将 service.auth 设置为 true,表示该服务的调用需要经过认证。param.signtrue,表示参数需要进行验证。

    @Service(parameters = {"service.auth","true","param.sign","true"})
    public class AuthDemoServiceImpl implements AuthService {
    }
    

    服务消费者

    只需要配置相应的证书和其他信息,然后在调用这些需要认证的接口之前,会自动进行签名操作。通过与认证服务的交互,用户无需在代码中配置 AK/SK 等敏感信息,并无需重启应用即可刷新 AK/SK,达到动态发放权限的目的。

该方案已提交到 Dubbo 开源社区,基本框架已合并。除了 AK/SK 认证方式外,SPI 机制支持用户自定义认证和加密,适应公司内部基础设施的密钥存储。


上次修改时间:2023 年 2 月 23 日:更新 SEO / img alt (35090e3f9b4)