创建和删除 Azure 服务总线主题订阅的最低权限?
Minimum Permissions for Creating and Deleting Subscriptions to an Azure Service Bus Topic?
我正在创建一个应用程序,它需要创建和删除对 Azure 服务总线中已创建主题的订阅。
我的共享访问令牌是否需要管理主题的权限才能创建和删除订阅?我进行了一些初步的谷歌搜索,我能找到的 none 篇文章显示了三个角色(管理、发送、收听)与订阅实体的相关性。
谢谢!
更新
我直接在该主题上创建了一个共享访问策略,然后我编写了以下代码来访问该主题,创建订阅,然后通过 IDisposable 接口创建订阅 cancel/dispose:
public class SubscriptionHandler : IDisposable
{
protected NamespaceManager SubManager { get; set; }
protected SubscriptionDescription SubDetails { get; set; }
public SubscriptionClient Client { get; }
public SubscriptionHandler(AuthDetails details)
{
try
{
var connectionString = ConfigurationManager.AppSettings["Microsoft.ServiceBus.ConnectionString"];
SubManager = NamespaceManager.CreateFromConnectionString(connectionString);
SubDetails = new SubscriptionDescription("topic", $"record{details.ID}.Other{details.OtherID}");
if (!SubManager.SubscriptionExists(SubDetails.TopicPath, SubDetails.Name))
{ //setting subscription to receive all bookings that are for the given businessID
SubManager.CreateSubscription(SubDetails, new SqlFilter($"ID = {details.ID}"));
}
Client = SubscriptionClient.CreateFromConnectionString(connectionString, SubDetails.TopicPath, SubDetails.Name);
}catch (Exception ex)
{
throw;
}
}
public void Dispose()
{
if(Client != null)
{
Client.Close(); // telling subscription we are no longer going to recieve messages
}
if (SubManager != null && SubManager.SubscriptionExists(SubDetails.TopicPath, SubDetails.Name))
{
SubManager.DeleteSubscription(SubDetails.TopicPath, SubDetails.Name);
}
}
但是,我仍然在
上抛出未经授权的异常
SubManager.CreateSubscription(SubDetails, new SqlFilter($"ID = {details.ID}"));
call. I copied the connection string from the SharedAccessPolicy connection strings, then removed the EntityPath name value pair.... What am I doing wrong?
does my share access token need manage permissions on the topic to create and delete subscriptions?
正如官方文档提到的Rights required for Service Bus operations,Create a subscription
和Delete subscription
操作需要对该主题的管理权限。
如果没有管理权限,您在处理Create/Delete订阅操作时会得到如下401响应:
我正在创建一个应用程序,它需要创建和删除对 Azure 服务总线中已创建主题的订阅。
我的共享访问令牌是否需要管理主题的权限才能创建和删除订阅?我进行了一些初步的谷歌搜索,我能找到的 none 篇文章显示了三个角色(管理、发送、收听)与订阅实体的相关性。
谢谢!
更新 我直接在该主题上创建了一个共享访问策略,然后我编写了以下代码来访问该主题,创建订阅,然后通过 IDisposable 接口创建订阅 cancel/dispose:
public class SubscriptionHandler : IDisposable
{
protected NamespaceManager SubManager { get; set; }
protected SubscriptionDescription SubDetails { get; set; }
public SubscriptionClient Client { get; }
public SubscriptionHandler(AuthDetails details)
{
try
{
var connectionString = ConfigurationManager.AppSettings["Microsoft.ServiceBus.ConnectionString"];
SubManager = NamespaceManager.CreateFromConnectionString(connectionString);
SubDetails = new SubscriptionDescription("topic", $"record{details.ID}.Other{details.OtherID}");
if (!SubManager.SubscriptionExists(SubDetails.TopicPath, SubDetails.Name))
{ //setting subscription to receive all bookings that are for the given businessID
SubManager.CreateSubscription(SubDetails, new SqlFilter($"ID = {details.ID}"));
}
Client = SubscriptionClient.CreateFromConnectionString(connectionString, SubDetails.TopicPath, SubDetails.Name);
}catch (Exception ex)
{
throw;
}
}
public void Dispose()
{
if(Client != null)
{
Client.Close(); // telling subscription we are no longer going to recieve messages
}
if (SubManager != null && SubManager.SubscriptionExists(SubDetails.TopicPath, SubDetails.Name))
{
SubManager.DeleteSubscription(SubDetails.TopicPath, SubDetails.Name);
}
}
但是,我仍然在
上抛出未经授权的异常SubManager.CreateSubscription(SubDetails, new SqlFilter($"ID = {details.ID}")); call. I copied the connection string from the SharedAccessPolicy connection strings, then removed the EntityPath name value pair.... What am I doing wrong?
does my share access token need manage permissions on the topic to create and delete subscriptions?
正如官方文档提到的Rights required for Service Bus operations,Create a subscription
和Delete subscription
操作需要对该主题的管理权限。
如果没有管理权限,您在处理Create/Delete订阅操作时会得到如下401响应: