Azure Service Bus поддерживает управляемый доступ к удостоверениям, однако единственный метод, который я нашел, например, для отправки сообщения в очередь, использует этот подход, который требует кода и 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-dotnet https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-managed-service-identity
Я ищу способ сделать то же самое с вызовом API REST из политики управления API Azure.Я предоставил APIM, доступ на основе ролей к служебной шине, и я могу получить токен обратно, но я получаю эту ошибку от служебной шины при попытке вызова API REST с токеном управляемой идентификации, переданным в заголовке авторизации:
MalformedToken: The credentials contained in the WRAP header are not well-formed.
Похоже, что Service Bus может поддерживать только токены WRAP или SAS с их REST API: https://docs.microsoft.com/en-us/rest/api/servicebus/send-message-batch
Но опять же, как это работает за кулисами?
TokenProvider.CreateManagedServiceIdentityTokenProvider()
Похоже, это возможно с помощью API REST.