python-3.x - 在 Azure Python SDK 中,是否可以生成特定于 ServiceBus 主题的 SAS 令牌?
问题描述
我正在使用 Python 3.8 和 azure-servicebus v0.50.3。我想为我创建的每个主题生成一个只读 SAS 令牌。到目前为止,我已经发现我可以创建这样的主题......
sbs = ServiceBusService(service_namespace,
shared_access_key_name=key_name,
shared_access_key_value=key_value)
...
sbs.create_topic(name)
但是,我不清楚如何(或者甚至可能)使用现有 API 为我创建的每个主题生成一个 SAS 令牌。在线文档似乎暗示这是不可能的,但我想我还是会问。
解决方案
好消息和坏消息。虽然肯定有方法可以为每个主题生成 SAS 令牌,但我不相信您可以使用您正在使用的 API 来做到这一点。通过 control_client 实现的 ServiceBusService 基本上是我们的“双重遗产”SDK,并且已经过时且已被有效弃用。
也就是说,我将向您指出我们当前的azure-mgmt-servicebus包。有了它,您可以以类似的方式创建主题,但对您的目的更重要的是,您可以创建一个授权规则(您可能只想为其提供侦听器权限),然后访问主题的密钥以在需要时以编程方式使用它们。
老实说,我不确定您是否将 SAS 密钥通俗地称为令牌(坦率地说,我不断翻转命名)所以为了涵盖我的所有基础,我还将在下面详细说明如何将密钥变成瞬态令牌,但如果你不需要这个,你可以跳过下一段。
虽然没有官方内置实用程序可以从 SAS 密钥生成 SAS 令牌,但希望这是一种可行的方法,让我在这里提供一些面包屑导航。(这演示了使用 SAS 密钥生成然后使用 SAS 令牌验证我们即将推出的 GA 版本,您可以根据需要使用或多或少,但用于您的目的的密钥是generate_sas_token
)
如果需要任何澄清或我误解了您的问题,请不要犹豫,如果您将来遇到任何问题,我也会提及我们的 github 。(完全免责声明,我是这个 sdk 的维护者)
推荐阅读
- python - Pandas 数据框 applymap 并行执行
- javascript - CSS 在当前页面上创建边框
- python - 自动硒错误后重新加载python脚本
- android - 定义“视图”位置的准确方法是什么?
- c# - 如何在 Web API 请求的 FromBody ViewModel 中使用具有 EnumMember 属性的枚举?
- jquery - 带有索引和值的 jQuery $.map
- sql - 简化查询
- azure - 为什么我的 Azure Dev Ops Pipeline 无法还原包?
- html - 自动计算 SCSS 中的旋转度数以将多个元素从 0 旋转到 180
- java - 如何修复 repast.simpony.runtime.RepastMain 产生的错误?