Как диагностировать сбой аутентификации Microsoft Identity?
У меня есть приложение веб-API ASP.NET Core 3.1, защищенное аутентификацией Azure. У меня также есть приложение Angular 11, которое вызывает веб-API.
Они отлично работают в нашей среде интеграции. Но аутентификация не проходит в тестовой среде.
Приложение Angular отлично аутентифицируется с помощью библиотеки msal-angular, оно получает токен доступа и включает его при вызове веб-API. Но веб-API не может получить идентификатор из токена-носителя.
После удаления и повторного создания обоих (интерфейсных и внутренних) регистраций приложений Azure несколько раз, и после их перенастройки аутентификация по-прежнему не выполняется. Я не знаю, в чем причина, поэтому мне нужно ее диагностировать.
Я включил
JwtBearerMiddlewareDiagnosticsEvents
и я вижу в журналах «Begin OnAuthenticationFailedAsync» и «End OnAuthenticationFailedAsync». Но информации недостаточно. Он больше не говорит вам, что события возникли, никакой дополнительной информации.
Я прочитал следующую статью о документации, в которой рассказывается, как настроить ведение журнала в MSAL.NET, но я не думаю, что это применимо к веб-API.
https://docs.microsoft.com/en-us/azure/active-directory/develop/msal-logging-dotnet
Возникает вопрос: как понять, почему не удается выполнить аутентификацию? Есть ли способ зафиксировать причину?
ОБНОВИТЬ:
Я ближе, я установил уровень журнала для отслеживания, и теперь я вижу следующее в журнале приложения asp.net core web api:
IDX10511: Ошибка проверки подписи. Ключи пробовали: '[PII скрыта. Для получения дополнительных сведений см. Https://aka.ms/IdentityModel/PII.] ». \nkid:'[PII скрыта. Для получения дополнительной информации см. Https://aka.ms/IdentityModel/PII.]
1 ответ
Ваша проблема решена. Проблема в том, что конфигурация веб-API неверна. Вам нужно создать их заново и перенастроить.
По моему опыту, вам нужно создать два приложения в Azure: одно представляет приложение веб-API, а другое - клиентское приложение (например, приложение Angular 11).
Затем вам нужно открыть api приложения веб-API в Azure и добавить приложение Angular 11 в качестве клиентского приложения в приложение веб-API.
Наконец, при запросе токена доступа вам необходимо установить для области видимость:
api://{web api client id}/{scope name}
.