跳转到内容

SignAuthenticator

SignAuthenticator

概念理解

开发文档

新建SignAuthenticator鉴权器

Sign签名算法

将业务请求参数和appKey以字典序排序后拼接再添加密钥appSecret的值,再计算拼接后字符串的MD5当作sign

例如,某个http接口为Post请求,请求数据为:

{
"code":"001",
"name":"mule",
"message":"sign demo"
}

且appKey的值为demoKey,appSecret的值为demoSecret

则生成sign的java代码如下:

public class Sign {
public String sign() {
String appSecret = "demoSecret";
Map<String, Object> originMap = JSON.parseObject("{\"code\":\"001\",\"name\":\"mule\",\"message\":\"sign demo\", \"appKey\":\"demoKey\"}", Map.class);
Map<String, Object> sortedBody = new TreeMap<>(originMap);
String bodyString = sortedBody.entrySet().stream()
.map(entry -> entry.getKey() + "=" + entry.getValue())
.collect(Collectors.joining("&")) + appSecret;
return DigestUtils.md5Hex(bodyString);
}
}

调用示例

通过上图新建鉴权器时配置的参数,假设新建http服务监听触发器时path为*/demo/authenticator*,且入参模型的请求数据为:

{
"code":"001",
"name":"mule",
"message":"sign demo"
}

则需要如下图所示调用:

箭头所示的域名为erda中集成平台 runtime的域名,各个项目的runtime域名不一致。自己使用时需要根据项目到对应的集成平台应用中查看该域名