gpt4 book ai didi

python - 在 Python 中为 Azure IoT 中心生成具有到期日的 SAS token

转载 作者:行者123 更新时间:2023-12-03 07:06:21 24 4
gpt4 key购买 nike

我有一个 IoT 中心,其中包含设置了 SAS 身份验证的各种设备。从文档中,我了解如何使用 IoT 中心连接字符串连接到设备,但我想知道如何使用 SAS token 。

from base64 import b64encode, b64decode
from hashlib import sha256
from time import time
from urllib import parse
from hmac import HMAC

def generate_sas_token(uri, key, policy_name, expiry=3600):
ttl = time() + expiry
sign_key = "%s\n%d" % ((parse.quote_plus(uri)), int(ttl))
print(sign_key)
signature = b64encode(HMAC(b64decode(key), sign_key.encode('utf-8'), sha256).digest())

rawtoken = {
'sr' : uri,
'sig': signature,
'se' : str(int(ttl))
}

if policy_name is not None:
rawtoken['skn'] = policy_name

return 'SharedAccessSignature ' + parse.urlencode(rawtoken)

我在 docs 中找到了这个函数但我很难理解如何使用这个 token 。

问题

  1. 有人可以给我一个如何使用此 token 连接到 IoT 中心 API 的示例吗?
  2. 如果我需要 token 过期,这是否意味着必须重新生成共享访问 key ?如果是,我可以通过编程方式执行此操作吗?

提前致谢:)

最佳答案

如果您使用的是 MQTT:正如 @PlaidMode 的答案所述,SAS token 可以用作 MQTT client 中的密码值。 。链接的文档还描述了需要哪些其他值。如果您使用 HTTP,则相同的 token 就是授权 header 的值。

关于你的第二个问题,过期是必须的,没有办法解决。然而,这个期限没有限制,你可以根据需要延长期限(是否应该是另一个问题)。 key 过期后,您需要创建一个新 key 。您可以使用问题中包含的相同代码来执行此操作。

关于python - 在 Python 中为 Azure IoT 中心生成具有到期日的 SAS token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71350867/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com