Не найдено действительного сопоставления ключей для securityToken
Я разрабатываю тестовое приложение для отображения утверждений о подлинности личности в MVC-ASP.net (Visual Studio 2013). Я дал аутентификацию из активного каталога следующим образом.
1. Добавить новый проект MVC в решение. 2. Нажмите на Изменить аутентификацию. 3.Выберите учетную запись организации 4.Выберите на помещения. URL-адрес федерации 5.given
После запуска приложения я получаю следующую ошибку.
WIF10201: Не найдено действительного сопоставления ключей для securityToken: 'System.IdentityModel.Tokens.X509SecurityToken' и эмитента: ' http://websso.avanade.com/adfs/services/trust'
Эта ошибка возникает только для этой федерации, для другой федерации я могу видеть заявки.
После поиска в Интернете я думаю, что это вопрос сертификата (отпечаток). Но я не ясен с решениями.
Может кто-нибудь объяснить мне, почему эта ошибка и решение проблемы для того же.
Заранее спасибо!!!
3 ответа
Может быть 2 причины для этой ошибки.
Отсутствует отпечаток в web.config: получите фактический отпечаток из ADFS и поместите в web.config под тег thumbprint
Несоответствие номера порта между сайтом и конфигурацией ADFS: обновите конфигурацию ADFS, указав URL-адрес, содержащий правильный номер порта
Второе решение исправило это для меня...
Я столкнулся с этим при попытке обновить устаревшее приложение MVC для использования AAD.
Я основал изменения на недавно созданном проекте с организационной аутентификацией и заметил, что у меня не было строки подключения с именем DefaultConnection
, который DatabaseIssuerNameRegistry
предполагается, что вы будете, и у меня не было ни одной из необходимых таблиц в базе данных.
Используя замечательный пост Витторио Берточчи со всеми подробностями, я реорганизовал код для интеграции новых таблиц базы данных, создал и применил миграцию и вставил соответствующий ключ и владельца в новый IssuingAuthorityKey
а также Tenant
таблицы соответственно. Я также должен был убедиться, что DatabaseIssueNameRegistry
использовать существующий DbContext
,
Отпечатки и имена серверов чувствительны к регистру в web.config. убедитесь, что они набраны правильно, и перезапустите IIS.
Это устранило мою проблему.
Для решений, созданных в VS2013 и более поздних версиях, решение должно содержать логику автоматического переключения ключей. Нет необходимости помещать значение в файл web.config.
Вы можете столкнуться с этой проблемой при переносе решения из локальной среды в другую. В этом случае вы, вероятно, попытаетесь указать свое решение на новое приложение в Azure Active Directory. Проверьте следующее:
- Убедитесь, что все URL-адреса в файле web.config указывают на правильный URL-адрес, а не тот, который автоматически генерируется при локальной настройке.
- Удалите все записи из таблицы IssuingAuthorityKeys. Ключи автоматически заполняются, когда вы перестраиваете решение и запускаете его. На сервере вам может потребоваться заменить библиотеки вручную для обновления
- И последнее и самое важное, удалите все строки из таблицы Tenants. При первом запуске в новой среде администратор из Active Directory-владельца должен зарегистрироваться и авторизовать приложение.
Если значения в обеих таблицах по-прежнему не заполняются автоматически после этих шагов, обратитесь к этой статье, чтобы узнать, как вручную получить значения.