当前位置: 首页 > 知识库问答 >
问题:

使用托管标识对Azure服务总线进行经过验证的REST API调用

王磊
2023-03-14

Azure服务总线支持托管标识访问,但我发现向队列发送消息的唯一方法是使用这种需要代码和服务总线SDK的方法:

var tokenProvider = TokenProvider.CreateManagedServiceIdentityTokenProvider();
QueueClient sendClient = new QueueClient($"sb://{Config.Namespace}.servicebus.windows.net/", Config.Queue, tokenProvider);
await sendClient.SendAsync(new Message(Encoding.UTF8.GetBytes(messageInfo.MessageToSend)));
await sendClient.CloseAsync();

来源:https://github.com/Azure-Samples/app-service-msi-servicebus-dotnethttps://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-managed-service-identity

我正在寻找一种方法,从Azure API管理策略中对REST API调用执行相同的操作。我已授予对服务总线的APIM(基于角色的访问)权限,并且我能够获得一个令牌,但在尝试使用在授权标头中传递的托管标识令牌调用REST API时,我从服务总线返回了此错误:

MalformedToken: The credentials contained in the WRAP header are not well-formed.

此时,服务总线可能仅支持WRAP或SAS令牌及其REST API:https://docs.microsoft.com/en-us/rest/api/servicebus/send-message-batch

但话说回来,这在幕后是如何运作的?

TokenProvider.CreateManagedServiceIdentityTokenProvider()

似乎可以使用RESTAPI。

共有1个答案

巢承安
2023-03-14

在SDK中,他们似乎没有将其指定为Authorization:Bearer-tokenabcdef 但作为授权:令牌ABCDEF。这有点不寻常。

 类似资料:
  • 我们需要从Azure应用程序服务和Azure功能运行访问Azure服务总线(ASB)的应用程序。我们需要使用用户指定的身份进行身份验证。我们编写以下代码,用于系统分配的标识,但不用于用户分配的标识: 引发此错误: 所以核心错误是找不到指定ClientId/ResourceId的MSI 。看起来我们需要指定客户端id。然后我们发现https://github.com/Azure/azure-sdk-

  • 我在Azure中设置了两个应用程序服务。”父级和子级都公开APIendpoint。 子节点有endpointGet。 父节点有endpoint“获取”和“获取儿童”(使用HttpClient在儿童上调用“获取”)。 我希望所有子endpoint都需要通过托管身份和AAD进行身份验证,并且我希望所有父endpoint都允许匿名。但是在Azure中,我希望将父应用服务设置为具有调用子应用服务的权限。因

  • 现在我正在使用AAD应用程序使服务成为= AAD应用程序 流程如下所示: 服务A:从托管标识获取令牌 服务A:转到KeyVault,出示令牌并获取AAD应用程序的秘密 服务A:转到AAD,提供一个秘密并为特定资源请求一个令牌 服务A:拨打服务B 服务B:验证令牌和资源 我想知道是否可以向我的服务注册托管标识,因此如果提供托管标识令牌,则服务B可以信任服务A。类似于这样: 服务A:从托管身份获取令牌

  • 当尝试在Azure Gov中获取服务总线的托管标识令牌时,我尝试使用资源:https://servicebus.usgovcloudapi.net/而不是像商业(https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-managed-service-identity)那样https://servicebus.

  • 我已经尝试按照本教程来验证我的服务总线对,但是,我得到了401。 我在设置中使用以下代码: 然后我这样称呼SB客户: 当我调用我得到一个401错误: 失败:Azure Messaging ServiceBus[82]为标识符myqueue-578624f3-f732-4a9b-2ab0-9adc01949a5a创建发送链接时发生异常。错误消息:“系统。UnauthorizedAccessExcep

  • 我在Azure中创建了一个ServiceBus命名空间,以及一个主题和一个订阅。我还有一个简单的Azure version 1函数,可在ServiceBus中的接收主题上触发,如下所示: 当我通过使用主题的共享访问策略在函数应用程序设置中定义连接字符串时,该函数会很好地触发ServiceBus中的主题,如下所示: 现在,我想使用托管服务标识(MSI)来访问服务总线,而不是共享访问密钥。根据这个(h