Для 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 ответа:
Может быть 2 причины для этой ошибки.
Отсутствует отпечаток большого пальца в сети.config: получить фактический отпечаток пальца из ADFS и поместить в web.config под тегом thumbprint
Несоответствие в номере порта между сайтом и конфигурацией ADFS: обновите конфигурацию ADFS с помощью url, содержащего правильный номер порта
Второе решение исправило это для меня...
Я столкнулся с этим при попытке обновить устаревшее приложение MVC для использования AAD.
Я основал изменения на недавно созданном проекте с организационной аутентификацией и заметил, что у меня нет строки подключения с именем
DefaultConnection
, которуюDatabaseIssuerNameRegistry
предполагает, что вы будете, и у меня не было ни одной из требуемых таблиц в базе данных.Используя замечательный пост Витторио Берточчи со всеми деталями , я переработал код для интеграции новых таблиц базы данных, создал и применил миграцию и вставил соответствующие ключ и клиент в новые таблицы
IssuingAuthorityKey
иTenant
соответственно. Я также должен был убедиться, что изменилDatabaseIssueNameRegistry
, чтобы использовать существующийDbContext
.
Для решений, созданных в VS2013 и более поздних версиях, решение должно содержать логику автоматического переключения ключей. Нет необходимости помещать ценность в сеть.конфигурационный файл.
Эта проблема может возникнуть при переносе решения из локальной среды в другую среду. В этом случае вы, вероятно, попытаетесь указать свое решение на новое приложение в Azure Active Directory. Проверьте следующее:
- убедитесь, что все URL-адреса в интернете.config указывает на правильный url, а не на один автоматически генерируется, когда вы устанавливаете его локально
- удалите все записи из таблицы IssuingAuthorityKeys. Ключи будут автоматически заполняться, когда вы заново создадите решение и запустите его. На сервере вам может потребоваться вручную заменить библиотеки DLL, чтобы обновить их
Последнее и самое важное: удалите все строки из таблицы арендаторов. При первом запуске в новой среде администратор из Active Directory-владельца должен зарегистрироваться и авторизовать приложение.Если значения в обеих таблицах по-прежнему не заполняются автоматически после этих шагов, проверьте эту статью для шагов о том, как вручную получить значения.