AAD AcquireToken возвращает ошибку AADSTS50000 - PullRequest
0 голосов
/ 18 декабря 2018

Мы используем Azure Active Directory для защиты наших размещенных API Azure.Эти API используются приложениями Angular, размещенными в Azure.Mocst API реализован в виде ASP.NET WebAPI, некоторые из них теперь реализованы с использованием функций Azure.

Мы защищали наши приложения таким образом последние пару лет, и у нас не было никаких проблем.Мы уже предоставляли доступ к одному приложению на основе токенов для другого, добавляя их в разрешенную аудиторию, и это работало нормально.В настоящее время мы сталкиваемся с проблемой при реализации нового сценария.

Проблема
У нас есть два приложения: текущее ( cur ) и целевое ( tar ).Все наши пользователи могут войти на cur .Бэкэнд для cur получает токен для доступа к tar на основе токена, который пользователь получил за cur .Это работает для пользователей, поддерживаемых Azure Active Directory, нашей или федеративной.Как только пользователи входят в систему, которые не поддерживаются Azure Active Directory (что означает, что они поддерживаются учетной записью Microsoft), получение токена для tar завершается с ошибкой AADSTS50000: There was an error issuing a token,

Контекст
Наши приложения размещаются в другом клиенте AAD, чем те, где зарегистрированы наши пользователи и приложения.Регистрация пользователей и приложений в одном и том же клиенте AAD.Мы не думаем, что это проблема, поскольку конфигурация работает для учетных записей, поддерживаемых AAD.

Мы используем AuthenticationContext.AcquireTokenAsync (String, ClientCredential, UserAssertion) , чтобы получить токен для доступа к tar со следующими параметрами:

  • ID tar application
  • ID и ключ cur
  • Токен текущего пользователя для cur

Мы видим одно существенное различие между исходными токенами для учетных записей с поддержкой AAD и учетных записей с поддержкой учетных записей Microsoft: поле IDP (IdentityProvider) отличается.Для учетных записей, поддерживаемых учетной записью Microsoft, IDP составляет live.com.Для учетных записей с поддержкой AAD это https://sts.windows.net/<guid>.

Мы создали несколько тестовых учетных записей, как в нашей AAD, так и во внешних, чтобы убедиться, что это не проблема, связанная с нашими существующими учетными записями пользователей.Использование различных конфигураций для наших AuthenticationContext или ClientCredential не решает проблему.

Есть идеи?

1 Ответ

0 голосов
/ 10 января 2019

Приглашение пользователей в качестве гостя будет работать, но если это непрактично, вам необходимо добавить поддержку учетных записей MSA в ваши приложения / службы.Это возможно с помощью конечной точки Azure AD v2.0.

Документ Сравнение конечной точки Azure AD v2.0 с конечной точкой v1.0 содержит множество деталей, которые вам могут понадобитьсячтобы узнать, прежде чем начать вносить изменения.

Попробуйте получить несколько примеров, доступных на Образцы кода Azure Active Directory (конечная точка v2.0) , чтобы получить хорошее понимание.

Краткое описание изменений, которые вы будете вносить

  1. Используйте более новую библиотеку MSAL вместо ADAL.
  2. Использование областей вместо ресурса
  3. Использование нового портала регистрации приложений (предварительного просмотра).
  4. Обновите регистрацию приложений доподдержка учетных записей AAD и MSA.См. signInAudience in Манифест приложения Azure Active Directory .
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...