Azure 消息 Queue - 生成共享访问签名
Azure Message Queue -Generate Shared Access Signature
我在尝试使用 PostMan 向 Azure SB Queue 发送 POST 消息时遇到问题。
我得到的错误是401 40103:无效的授权令牌签名
我的问题是生成 SAS,因为我正在尝试遵循各种文章和示例,但我必须 missing/overlooking/not 理解一些东西。
如果我描述我所做的事情,希望我犯错的地方会变得很明显。
我的 Queue URL 是 https://GTRAzure.servicebus.windows.net/subscriptionpreference
我的政策是 Submit
我选择了 12 月的到期日:1512086400
我的 string-to-sign 是 https://gtrazure.servicebus.windows.net/subscriptionpreference\n1512086400 然后编码为 https%3A%2F%2Fgtrazure.servicebus.windows.net%2Fsubscriptionpreference%5Cn1512086400
然后我使用从提交策略中获得的主键对其进行签名。我用这个来测试:https://www.freeformatter.com/hmac-generator.html
这会使用 SHA-256 生成类似于 425d5ff8beb8da58e6f97e45462037e25ea56bcb63470f9b28761fa012f61090
的代码,然后我对其进行 base-64 编码以获得 NDI1ZDVmZjhiZWI4ZGE1OGU2Zjk3ZTQ1NDYyMDM3ZTI1ZWE1NmJjYjYzNDcwZjliMjg3NjFmYTAxMmY2MTA5MA==
然后我把它们放在一起得到我放在授权文本中的这个header
SharedAccessSignature sig=NDI1ZDVmZjhiZWI4ZGE1OGU2Zjk3ZTQ1NDYyMDM3ZTI1ZWE1NmJjYjYzNDcwZjliMjg3NjFmYTAxMmY2MTA5MA==&se=1512086400&skn=Submit=&sr=https%3A%2F%2Fgtrazure.servicebus.windows.net%2Fsubscriptionpreference%5Cn1512086400
我认为您提供的要签名的字符串不正确,因为 \n
没有被视为生成编码值的新行:
https%3A%2F%2Fgtrazure.servicebus.windows.net%2Fsubscriptionpreference%5Cn1512086400
授权失败。
但是如果把它当作换行,它会给出这样的值:
https%3A%2F%2Fgtrazure.servicebus.windows.net%2Fsubscriptionpreference%0A1512086400
不会报错
我在尝试使用 PostMan 向 Azure SB Queue 发送 POST 消息时遇到问题。
我得到的错误是401 40103:无效的授权令牌签名 我的问题是生成 SAS,因为我正在尝试遵循各种文章和示例,但我必须 missing/overlooking/not 理解一些东西。
如果我描述我所做的事情,希望我犯错的地方会变得很明显。
我的 Queue URL 是 https://GTRAzure.servicebus.windows.net/subscriptionpreference
我的政策是 Submit
我选择了 12 月的到期日:1512086400
我的 string-to-sign 是 https://gtrazure.servicebus.windows.net/subscriptionpreference\n1512086400 然后编码为 https%3A%2F%2Fgtrazure.servicebus.windows.net%2Fsubscriptionpreference%5Cn1512086400
然后我使用从提交策略中获得的主键对其进行签名。我用这个来测试:https://www.freeformatter.com/hmac-generator.html
这会使用 SHA-256 生成类似于 425d5ff8beb8da58e6f97e45462037e25ea56bcb63470f9b28761fa012f61090
的代码,然后我对其进行 base-64 编码以获得 NDI1ZDVmZjhiZWI4ZGE1OGU2Zjk3ZTQ1NDYyMDM3ZTI1ZWE1NmJjYjYzNDcwZjliMjg3NjFmYTAxMmY2MTA5MA==
然后我把它们放在一起得到我放在授权文本中的这个header
SharedAccessSignature sig=NDI1ZDVmZjhiZWI4ZGE1OGU2Zjk3ZTQ1NDYyMDM3ZTI1ZWE1NmJjYjYzNDcwZjliMjg3NjFmYTAxMmY2MTA5MA==&se=1512086400&skn=Submit=&sr=https%3A%2F%2Fgtrazure.servicebus.windows.net%2Fsubscriptionpreference%5Cn1512086400
我认为您提供的要签名的字符串不正确,因为 \n
没有被视为生成编码值的新行:
https%3A%2F%2Fgtrazure.servicebus.windows.net%2Fsubscriptionpreference%5Cn1512086400
授权失败。
但是如果把它当作换行,它会给出这样的值:
https%3A%2F%2Fgtrazure.servicebus.windows.net%2Fsubscriptionpreference%0A1512086400
不会报错