Аутентифицированный вызов API REST к служебной шине Azure с использованием управляемой идентификации - PullRequest
2 голосов
/ 24 сентября 2019

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.

1 Ответ

0 голосов
/ 24 сентября 2019

Кажется, в SDK они указывают не Authorization: Bearer tokenabcdef....., а Authorization: tokenabcdef.Что немного необычно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...