如何在Postman中生成适用于Service Bus的SAS令牌
Postman生成Service Bus可用SAS令牌教程
官方基础实现逻辑(Node.js版本)
function createSharedAccessToken(uri, saName, saKey) { if (!uri || !saName || !saKey) { throw "Missing required parameter"; } var encoded = encodeURIComponent(uri); var now = new Date(); var week = 60*60*24*7; var ttl = Math.round(now.getTime() / 1000) + week; var signature = encoded + '\n' + ttl; var signatureUTF8 = utf8.encode(signature); var hash = crypto.createHmac('sha256', saKey).update(signatureUTF8).digest('base64'); return 'SharedAccessSignature sr=' + encoded + '&sig=' + encodeURIComponent(hash) + '&se=' + ttl + '&skn=' + saName; }
Postman预请求脚本可直接运行版本
实测以下代码可以直接放到Postman的预请求脚本(Pre-request Script) 中运行,生成的SAS令牌可正常用于Service Bus请求。
使用前置条件
提前在Postman集合变量中配置3个参数:
serviceNamespace:Service Bus的命名空间SharedAccessKeyName:共享访问密钥的名称SharedAccessKeySend:对应发送权限的共享访问密钥值
脚本运行后会自动将生成的SAS令牌存入集合变量SasToken,后续请求可以直接引用该变量。
注意:代码中
adfTest为示例队列/主题名称,可根据自己的实际资源路径修改。
var namespace = pm.collectionVariables.get("serviceNamespace"); var uri = "https://" + namespace + ".servicebus.windows.net/adfTest/messages"; var saName = pm.collectionVariables.get("SharedAccessKeyName"); var saKey = pm.collectionVariables.get("SharedAccessKeySend"); var sasToken = createSharedAccessToken(uri, saName, saKey); console.log(sasToken); pm.collectionVariables.set("SasToken", sasToken); function createSharedAccessToken(uri, saName, saKey) { if (!uri || !saName || !saKey) { throw "Missing required parameter"; } var encoded = encodeURIComponent(uri).toLowerCase(); var now = new Date(); var week = 60*60*24*7; var ttl = Math.round(now.getTime() / 1000) + week; var signature = encoded + '\n' + ttl; var hash = CryptoJS.HmacSHA256(signature, saKey); var hashInBase64 = CryptoJS.enc.Base64.stringify(hash); return 'SharedAccessSignature sr=' + encoded + '&sig=' + encodeURIComponent(hashInBase64) + '&se=' + ttl + '&skn=' + saName; }
内容的提问来源于stack exchange,提问作者Cristina Carrasco
相关产品推荐
相关产品推荐

