Служебная шина 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-dotnet https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-managed-service-identity
Я ищу способ сделать то же самое с помощью вызова REST API из политики управления API Azure. Я предоставил 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()
Похоже, это должно быть возможно с REST API.
Authorization: Bearer tokenabcdef.....
, а какAuthorization: tokenabcdef
. - person juunas   schedule 24.09.2019