【发布时间】:2015-08-14 02:24:13
【问题描述】:
尝试生成 Azure SAS 令牌以便能够使用服务总线 REST Api。
找到这个链接:
http://blog.simontimms.com/2015/01/30/sending-message-to-azure-service-bus-using-rest/
如何在 Android 上实现相同的功能?
我当前的尝试如下所示:
private String generateSasToken(String uri, String keyName, String key){
String ret = "";
long tokenExpirationTime = (System.currentTimeMillis() / 1000) + (10 * 365 * 24 * 60 * 60);
try {
String stringToSign = new URL(uri).toString() + "\n" + tokenExpirationTime;
SecretKey secretKey = null;
byte[] keyBytes = key.getBytes("UTF-8");
Mac mac = Mac.getInstance("HMACSHA256");
secretKey = new SecretKeySpec(keyBytes, mac.getAlgorithm());
mac.init(secretKey);
String signature = Base64.encodeToString(mac.doFinal(stringToSign.getBytes("UTF-8")), Base64.DEFAULT);
ret = String.format("SharedAccessSignature sr=%s&sig=%s&se=%s&skn=%s",
URLEncoder.encode(uri),
URLEncoder.encode(signature),
String.valueOf(tokenExpirationTime),
keyName);
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (InvalidKeyException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return ret;
}
使用 Postman 调用服务总线的 Rest API 后,我得到以下信息:
401 40103:授权令牌签名无效 时间 261 毫秒
更新:找到此链接
https://azure.microsoft.com/en-us/documentation/articles/notification-hubs-android-get-started/
在第 6 节下是 android 的代码
【问题讨论】:
标签: java android azure hash servicebus