У меня есть несколько 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