

Password 字段,用于连接 MQTT 服务器。Username 字段不会参与“一机一密”的认证的过程,但是在数据面授权策略开关打开后,是授权策略的判断维度之一,详见授权策略说明。/*** @clientId 客户端标识符* @key 设备身份注册表中 PrimaryKey 或 SecondaryKey*/public static String generateSasToken(String clientId, String key) throws Exception {// Token 有效期 3600 秒var expiry = Instant.now().getEpochSecond() + 3600;String stringToSign = URLEncoder.encode(clientId, StandardCharsets.UTF_8) + "\\n" + expiry;byte[] decodedKey = Base64.getDecoder().decode(key);Mac sha256HMAC = Mac.getInstance("HmacSHA256");SecretKeySpec secretKey = new SecretKeySpec(decodedKey, "HmacSHA256");sha256HMAC.init(secretKey);Base64.Encoder encoder = Base64.getEncoder();String signature = new String(encoder.encode(sha256HMAC.doFinal(stringToSign.getBytes(StandardCharsets.UTF_8))), StandardCharsets.UTF_8);String token = "SharedAccessSignature sr=" + URLEncoder.encode(clientId, StandardCharsets.UTF_8)+ "&sig=" + URLEncoder.encode(signature, StandardCharsets.UTF_8.name()) + "&se=" + expiry;return token;}
from base64 import b64encode, b64decodefrom hashlib import sha256from time import timefrom urllib import parsefrom hmac import HMACdef generate_sas_token(clientId, key, expiry=3600):ttl = time() + expirysign_key = "%s\\n%d" % ((parse.quote_plus(clientId)), int(ttl))signature = b64encode(HMAC(b64decode(key), sign_key.encode('utf-8'), sha256).digest())rawtoken = {'sr' : clientId,'sig': signature,'se' : str(int(ttl))}return 'SharedAccessSignature ' + parse.urlencode(rawtoken)
var generateSasToken = function(clientId, key) {resourceUri = encodeURIComponent(clientId);// 设置 Token 有效期 3600 秒var expires = (Date.now() / 1000) + 3600;expires = Math.ceil(expires);var toSign = resourceUri + '\\n' + expires;// Use cryptovar hmac = crypto.createHmac('sha256', Buffer.from(key, 'base64'));hmac.update(toSign);var base64UriEncoded = encodeURIComponent(hmac.digest('base64'));// Construct authorization stringvar token = "SharedAccessSignature sr=" + resourceUri + "&sig="+ base64UriEncoded + "&se=" + expires;return token;};
文档反馈