Ошибка "WIF10201: не найдено действительного сопоставления клавиш" при попытке создать заявки из SAML
Я пытаюсь проверить ответ SAML, полученный от Siteminder IDP от третьей стороны. Я установил сертификат, предоставленный ими. Когда я вызываю метод ValidateToken (System.IdentityModel.Tokens) для создания утверждений, я получаю следующую ошибку:
WIF10201: Не найдено действительного сопоставления ключей для securityToken: "System.IdentityModel.Tokens.X509SecurityToken" и эмитент: "эмитент uri"
Я копался вглубь, чтобы найти ошибку и ее бросание методом GetIssuerName (System.IdentityModel.Tokens).
В чем проблема? Я гуглил по этой проблеме, но не нашел ничего конкретного для моего случая. Есть ли у токена SAML моего клиента проблема или что-то не хватает в реализации. Я довольно новичок в федеративной аутентификации, поэтому прошу прощения за любую неточность в используемой терминологии.
Gaurav
3 ответа
Хорошо, нашел решение, но не мог понять, что за чтение позади него (полный noob, обновит ответ, когда я узнаю больше).
Следовал этому подходу преобразования ответа SAML2 в ответ WSFed, затем на этом новом токене я запустил свой код, теперь ошибка исчезла.
Примечание: вам все равно придется переопределить метод токена проверки (который я изначально сделал), чтобы избежать следующей ошибки:
“ID4154: A Saml2SecurityToken cannot be created from the Saml2Assertion because it contains a SubjectConfirmationData which specifies an InResponseTo value. Enforcement of this value is not supported by default. To customize SubjectConfirmationData processing, extend Saml2SecurityTokenHandler and override ValidateConfirmationData.”
Благодарю.
Я хотел сделать заметку для дальнейшего использования, так как столкнулся с этой ошибкой, но мое разрешение было другим. Я получил ошибку WIF10201 в пользовательском приложении MVC, использующем проверку подлинности на основе утверждений ADFS (3.0) в Windows Server 2012. web.config
приложения MVC записывается отпечаток ключа подписи токена ADFS. Оказывается, когда срок действия сертификата подписи истекает, ADFS создает новый ключ. Новый ключ помечен как "первичный", а старый ключ помечен как "вторичный" в консоли ADFS (в разделе AD FS/ Сервис / Сертификаты). Так по моему web.config
Конечно, там был отпечаток старого (вторичного) ключа. Как только я заменил его отпечатком нового (первичного) ключа, ошибка исчезла.
Возможно, вам не хватает конфигурации, которая отображает имя эмитента (как указано внутри токена) на сертификат (возможно, указанный с отпечатком). Я предполагаю, что вы решаете это с помощью некоторой конфигурации в вашем web.config. Посмотрите, как Microsoft проверяет реестр имен эмитентов. На странице приведен пример конфигурации. Правильная настройка полностью зависит от вашей ситуации.