Как получить токен для идентификатора, управляемого Azure, через интерфейс REST? - PullRequest
0 голосов
/ 06 октября 2018

Этот вопрос относится к статье:

https://docs.microsoft.com/en-us/azure/app-service/app-service-managed-service-identity

Я пытаюсь выяснить, как я могу имитировать использование субъекта службы, сгенерированного для моего приложения Azure, для локальной работы.,

Я следил за статьей, и когда я развернул функцию Azure в Azure и запустил ее оттуда, я смог успешно использовать MSI_ENDPOINT и MSI_SECRET для успешного получения токена.Однако, когда я запускаю то же самое развертывание локально, это терпит неудачу.Я использую точно такой же MSI_SECRET и заменяю MSI_ENDPOINT на Домен, который я использую для конечной точки функции Azure.

Пример: на лазере MSI_ENDPOINT = http://127.0.0.1:41831 и локально это http://localhost:7071 (http://0.0.0.0:7071

Однако, когда я запускаю его локально, я получаю ошибку 404 с запросом. Запрос http://0.0.0.0:7071/MSI/token?resource=https://vault.azure.net&api-version=2017-09-01 с секретом в заголовке. Точно такие же параметры с рабочимзагружается в Azure, за исключением MSI_ENDPOINT.

Есть ли какие-либо советы о том, как решить эту проблему, чтобы я мог запускать и тестировать локально?

Использование библиотеки Microsoft.Azure.Services.AppAuthentication для.NET для приложений и функций .NET, самый простой способ работы с управляемой идентификацией - через пакет Microsoft.Azure.Services.AppAuthentication. Эта библиотека также позволит вам тестировать свой код локально на компьютере разработчика, используя свою учетную запись пользователя изVisual Studio, интерфейс командной строки Azure или встроенная проверка подлинности Active Directory.s библиотека, см. ссылку Microsoft.Azure.Services.AppAuthentication.В этом разделе показано, как начать работу с библиотекой в ​​вашем коде.Добавьте ссылки на пакеты Microsoft.Azure.Services.AppAuthentication и Microsoft.Azure.KeyVault NuGet в ваше приложение.

Однако эта библиотека доступна только в .net, который я не использую, и делает этоне очень объясните, как бы вы сделали это с помощью вызова REST.

Спасибо!

1 Ответ

0 голосов
/ 06 октября 2018

Насколько я понимаю, MSI через REST работает для вас в облаке, но не локально.

К сожалению, кажется, что в настоящее время это нелегко сделать, если вы не можете использовать библиотеку AppAuthentication.См. это предложение GitHub .

Так что, если вы не хотите взламывать некоторый код отладки в своем производственном коде, вам, вероятно, нужно локально разместить «собственный прокси-сервер MSI», который просто выполняетклассическая аутентификация через учетные данные клиента (appId + secret) для возврата токена.

curl -d "grant_type=client_credentials&client_id=<removed_for_security>&client_secret=<removed_for_security>&resource=https%3A%2F%2Fvault.azure.net" https://login.microsoftonline.com/<removed_for_security>/oauth2/token

Обратите внимание, что я добавил KeyVault в качестве параметра ресурса.Смотрите ваш встроенный MSI URL - http://0.0.0.0:7071/MSI/token?resource=https://vault.azure.net&api-version=2017-09-01

...