Для securityToken не найдено корректного сопоставления ключей


Я разрабатываю тестовое приложение для отображения утверждений аутентифицированной идентичности в MVC-ASP.net (Visual studio 2013) Я дал аутентификацию из active directory следующим образом.

1.Добавьте новый проект mvc в решение . 2.нажмите на кнопку Изменить аутентификацию. 3.выберите Учетная запись организации 4.выберите в помещении. 5.данный url Федерации 6.Url-адрес идентификатора приложения

После запуска приложения я получаю следующую ошибку.

WIF10201: не найдено корректного сопоставления ключей для securityToken: "система.IdentityModel.Жетоны.X509SecurityToken 'и эмитент:' http://websso.avanade.com/adfs/services/trust '

Эта ошибка приходит только для этой федерации, для другой Федерации я могу видеть утверждения.

После поиска в Интернете я думаю, что это проблема сертификата(отпечатка пальца). Но у меня нет ясности с решениями.

Может ли кто-нибудь объяснить мне, почему эта ошибка бросает и решение для того же.

Заранее спасибо !!!

3 7

3 ответа:

Может быть 2 причины для этой ошибки.

  1. Отсутствует отпечаток большого пальца в сети.config: получить фактический отпечаток пальца из ADFS и поместить в web.config под тегом thumbprint

  2. Несоответствие в номере порта между сайтом и конфигурацией ADFS: обновите конфигурацию ADFS с помощью url, содержащего правильный номер порта

Второе решение исправило это для меня...

Я столкнулся с этим при попытке обновить устаревшее приложение MVC для использования AAD.

Я основал изменения на недавно созданном проекте с организационной аутентификацией и заметил, что у меня нет строки подключения с именем DefaultConnection, которую DatabaseIssuerNameRegistry предполагает, что вы будете, и у меня не было ни одной из требуемых таблиц в базе данных.

Используя замечательный пост Витторио Берточчи со всеми деталями , я переработал код для интеграции новых таблиц базы данных, создал и применил миграцию и вставил соответствующие ключ и клиент в новые таблицы IssuingAuthorityKey и Tenant соответственно. Я также должен был убедиться, что изменил DatabaseIssueNameRegistry, чтобы использовать существующий DbContext.

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

Эта проблема может возникнуть при переносе решения из локальной среды в другую среду. В этом случае вы, вероятно, попытаетесь указать свое решение на новое приложение в Azure Active Directory. Проверьте следующее:

  • убедитесь, что все URL-адреса в интернете.config указывает на правильный url, а не на один автоматически генерируется, когда вы устанавливаете его локально
  • удалите все записи из таблицы IssuingAuthorityKeys. Ключи будут автоматически заполняться, когда вы заново создадите решение и запустите его. На сервере вам может потребоваться вручную заменить библиотеки DLL, чтобы обновить их
  • Последнее и самое важное: удалите все строки из таблицы арендаторов. При первом запуске в новой среде администратор из Active Directory-владельца должен зарегистрироваться и авторизовать приложение.

Если значения в обеих таблицах по-прежнему не заполняются автоматически после этих шагов, проверьте эту статью для шагов о том, как вручную получить значения.