Closed
Description
基本需求:
- 一些敏感服务的provider,只允许经过授权的consumer应用发起的调用,不允许匿名调用。
方案设计:
- 基于AK/SK,即Access Key ID和Secret Access Key。
- AK/SK需要应用启动时向鉴权服务拉取,定期更新。为保证安全,用HTTPS通信。
- 签名和验签基于filter。
细节说明
-
签名过程,调用方可选择签名策略,选择根据调用元信息签名(方法信息、接口信息)和混合参数签名方法。
-
验签过程:provider收到调用请求时,根据AK查询缓存的SK(如果没有对应的AK,则立刻同步一次鉴权服务),并用同样方法计算signature,检查signature是否相同, 通过则执行调用,否则抛出异常。
鉴权服务接口设计
鉴权服务是Dubbo的外部服务,进行统一管理AK/SK,并为Dubbo应用提供AK/SK下发。
接口地址https://ip:80/secrets/{appName}
请求方式: GET
返回数据格式: JSON
返回数据定义:
{
"cumsomer":[ // 申请到访问其他服务的AK/SK对
{
"accessKey":"", // AK
"secretKey":"", // SK
"consumerSide":"", // 消费端appname
"providerSide":"", // 服务端appname
"timestamp":"", // 有效期
"options":"" // 其他信息
}
],
"provider":[ // 自己提供出去承认其他应用访问的AK/SK对
{
"accessKey":"", // AK
"secretKey":"", // SK
"consumerSide":"", // 消费端appname
"providerSide":"", // 服务端appname
"timestamp":"", // 有效期
"options":"" // 其他信息
}
]
}
Metadata
Metadata
Assignees
Labels
No labels