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 [защищена электронной почтой][защищенная электронная почта][защищена электронной почтой] , поэтому мне пришлось переключить настройки пула приложений на

Другие вопросы по тегам