【发布时间】:2018-09-04 08:10:51
【问题描述】:
我关注 this link 是为了向 Azure 中的 Eventhub 发送 HTTP POST。我得到的错误是 401 40103:无效的授权令牌签名。根据 Azure,POST 应具有以下格式:
发布 https://your-namespace.servicebus.windows.net/your-event-hub/partitions/0/messages?timeout=60&api-version=2014-01 HTTP/1.1 授权:SharedAccessSignature sr=your-namespace.servicebus.windows.net&sig=your-sas-key&se=1403736877&skn=RootManageSharedAccessKey 内容类型:application/atom+xml;type=entry;charset=utf-8 主机:your-namespace.servicebus.windows.net关于授权标头,我有几个问题:
- 我的密钥 (sig) 有一个等号,我应该将其替换为 %3d?
- 我目前也在做 POST 操作 Azure 中的 Python 和 C 语言示例脚本。在这些例子中,是 只需要引入具有所有凭据的端点和 发布/获取操作工作正常。是否可以执行 在 api 中直接引入端点的 put/get 操作 休息,或获取下面执行的授权标头 python还是c代码?
谢谢。
【问题讨论】:
-
您能否展示一下您目前正在从 REST 执行的 POST 操作? C 和 Python API 工作的原因是它们在后台构建 REST 请求。
-
当然!这是目前我的 POST 消息 curl -X POST -k -H 'Content-Type: application/atom+xml;type=entry;charset=utf-8' -H 'Authorization: SharedAccessSignature sr=mynamespace.servicebus.windows.net&sig =mysignature&se=1803736877&skn=RootManageSharedAccessKey' -i 'mynamespace.servicebus.windows.net/myeventhub/…' --data '{ "DeviceId":"dev-01", "Temperature":"37.0" }'
-
看起来是正确的。关于你的第一个问题,+ %3d,我相信它应该被编码,所以最好这样做。还要确保您的到期(se 字段)未设置为过去的某个值。这也会导致 401。
-
api-version看起来不对。 -
@evilSnobu 为什么?
标签: python c azure azure-eventhub