AAD на сервер Sql — DefaultAzureCredential в IIS
в чем хитрость использования учетных данных AAD с помощью Azure.Identity и Sql Server при использовании IIS?
В конечном итоге я хочу использовать управляемую идентификацию, назначенную пользователем, с сервером Sql, но мне также нужно отлаживать локально.
Этот код работает локально и в Azure при работе в консольном приложении.
var credential = new DefaultAzureCredential();
var token = credential.GetToken(
new Azure.Core.TokenRequestContext(
new[] { "https://database.windows.net/.default" }
));
connection.AccessToken = token.Token;
Однако, когда я запускаю свое веб-приложение, которое является веб-приложением .net core 3.1, я получаю следующее исключение.
У меня есть Инструменты > Аутентификация службы Azure, настроенные для моего пользователя AAD. У моего пользователя AAD есть доступ к базе данных. Приведенный выше код работает в моем консольном приложении. Я подаю в суд на EFCore 3.1. Этот код находится в ctor dbcontext. Я также заставил его работать в образце https://docs.microsoft.com/en-us/azure/app-service/app-service-web-tutorial-connect-msi с использованием IIS Express.Я не уверен, связана ли проблема с IIS Express или IIS или с моим startup.cs. Я пробовал войти через az, и это тоже не помогло. Я пытался запустить свой пул приложений IIS с локальной системой или своей учетной записью без разницы.
Вот сообщение об исключении, которое я получаю от веб-приложения.
DefaultAzureCredential не удалось получить токен из включенных учетных данных.
- Аутентификация EnvironmentCredential недоступна. Переменные среды настроены не полностью.
- Аутентификация ManagedIdentityCredential недоступна. Конечная точка управляемого удостоверения не найдена.
- Проверка подлинности SharedTokenCacheCredential недоступна. Аккаунты в кеше не найдены.
- Не удается получить доступ к поставщику маркеров Visual Studio в C:\WINDOWS\system32\config\systemprofile\AppData\Local.IdentityService\AzureServiceAuth\tokenprovider.json
- Сохраненные учетные данные не найдены. Необходимо аутентифицировать пользователя в учетной записи VSCode Azure.
- Запустите «az login», чтобы настроить учетную запись.
1 ответ
Я понял. На этой странице описаны шаги. https://docs.microsoft.com/en-us/dotnet/api/overview/azure/service-to-service-authentication#cant-retrieve-tokens-when-debugging-app-in-iis
В дополнение к этим шагам у меня была дополнительная сложность, поскольку моя учетная запись AD , но моя та же учетная запись в AAD [защищена электронной почтой][защищенная электронная почта][защищена электронной почтой] , поэтому мне пришлось переключить настройки пула приложений на