.NetCore API не может получить токен из Azure CLI с помощью MSI

У меня есть несколько API-интерфейсов, и я нахожусь в процессе изменения способа доступа к своим базам данных SQL Azure с простых учетных данных на модель управляемого удостоверения службы, использующую нашу Azure Active Directory.

У меня не было проблем с этим для моего старого .Net API, но я не могу заставить свой новый .NetCore API делать то же самое. Я читал, что .NetCore еще не поддерживает это, но мне не ясно, правильно это или нет.

Я запускаю этот код:

SqlConnection conn = new SqlConnection(_ConnectionString);
conn.AccessToken = (new AzureServiceTokenProvider()).GetAccessTokenAsync("https://database.windows.net/").Result;

и получить эту ошибку:

AzureServiceTokenProviderException: Parameters: Connectionstring: [No connection string specified], Resource: https://database.windows.net/, Authority: . Exception Message: Tried the following 3 methods to get an access token, but none of them worked.
Parameters: Connectionstring: [No connection string specified], Resource: https://database.windows.net/, Authority: . Exception Message: Tried to get token using Managed Service Identity. Unable to connect to the Managed Service Identity (MSI) endpoint. Please check that you are running on an Azure resource that has MSI setup.
Parameters: Connectionstring: [No connection string specified], Resource: https://database.windows.net/, Authority: . Exception Message: Tried to get token using Visual Studio. Access token could not be acquired. Visual Studio Token provider file not found at "C:\Users\simonb\AppData\Local\.IdentityService\AzureServiceAuth\tokenprovider.json"
Parameters: Connectionstring: [No connection string specified], Resource: https://database.windows.net/, Authority: . Exception Message: Tried to get token using Azure CLI. Access token could not be acquired. 

Я не ожидаю, что это сработает через MSI, потому что я запускаю его локально, но он должен работать через метод 2.


*update Найдена эта статья по теме: https://github.com/Azure/azure-sdk-for-net/issues/3933


person Simon Bourdeau    schedule 17.10.2018    source источник


Ответы (1)


Я читал, что .NetCore еще не поддерживает это, но мне не ясно, правильно это или нет.

Короче говоря, не поддерживается в .Net Core 2.1.

В настоящее время этот сценарий поддерживается .NET Framework 4.6 и выше, но не поддерживается .NET Core 2.1. .NET Core 2.2 поддерживает этот сценарий, но еще не включен в образы по умолчанию в службе приложений.

Дополнительные сведения см. в этом статья.

person Joey Cai    schedule 19.10.2018