Ошибка "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, затем на этом новом токене я запустил свой код, теперь ошибка исчезла.

http://blogs.msdn.com/b/bradleycotier/archive/2012/10/28/saml-2-0-tokens-and-wif-bridging-the-divide.aspx

Примечание: вам все равно придется переопределить метод токена проверки (который я изначально сделал), чтобы избежать следующей ошибки:

“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 проверяет реестр имен эмитентов. На странице приведен пример конфигурации. Правильная настройка полностью зависит от вашей ситуации.

Другие вопросы по тегам