Ошибка SAML для единого входа с ADFS - MSIS0038: Сообщение SAML имеет неверную подпись

Привет, я пытаюсь использовать SSO для аутентификации пользователей моего клиента непосредственно на моем сайте. IDP моего клиента - Microsoft ADFS, и я использую Passport-SAML ( https://github.com/bergie/passport-saml) для настройки процесса единого входа.

После получения специального URL-адреса, который я предоставляю своему клиенту (пример: www.myClient.myCompany.com), пользователь (не прошедший проверку подлинности), как и ожидалось, перенаправляется на страницу входа клиента. После того, как он вводит свои учетные данные, он остается на странице входа в систему, НО работа SSO, потому что пользователь проходит проверку подлинности, что означает, что если он откроет новую вкладку и перейдет на www.myClient.myCompany.com, он будет перенаправлен на мой сайт.

Здесь ошибка в журнале сервера ADFS:

The Federation Service encountered an error while processing the SAML authentication request. 

Additional Data 
Exception details: 
Microsoft.IdentityModel.Protocols.XmlSignature.SignatureVerificationFailedException: MSIS0038: SAML Message has wrong signature. Issuer: 'www.myCompany.co'.
   at Microsoft.IdentityServer.Protocols.Saml.Contract.SamlContractUtility.CreateSamlMessage(MSISSamlBindingMessage message)
   at Microsoft.IdentityServer.Service.SamlProtocol.SamlProtocolService.Issue(IssueRequest issueRequest)
   at Microsoft.IdentityServer.Service.SamlProtocol.SamlProtocolService.ProcessRequest(Message requestMessage)

MSIS0038 Ошибка - код события 303

Спасибо за ваше время!

3 ответа

(после ADFS и PingFederate SSO: сообщение SAML имеет неверную подпись)

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

Исправление заключается в установке этого исправления. Можете ли вы проверить, установлен ли ваш клиент на Windows Server 2008 и 2012, установлен ли 2843638 или 2843639, и если да, установить исправление, если оно еще не установлено? Просто выстрел в темноте...

Я не знаком ни с Microsoft ADFS, ни с Passport-SAML, но я, когда у нас были ошибки в сигнатурах, был из-за того, что отпечаток SHA1 сертификата IDp не совпадал с тем, что был на нашем конце.

Мы исправили их, убедившись, что сертификат правильно отформатирован, а затем вычислили отпечатки пальцев.

Формат: https://developers.onelogin.com/saml/online-tools/x509-certs/format-x509-certificate Отпечаток пальца: https://developers.onelogin.com/saml/online-tools/x509-certs/calculate-fingerprint

Надеюсь, это ваш случай

Не гуру Passport-SAML, но обычные причины этой ошибки с ADFS:

  • Несоответствие подписи - ADFS ожидает, что AuthRequest будет подписан, и это не так, или наоборот.

  • Срок действия сертификата подписи, установленного в этом RP, истек или является неправильным в том смысле, что это не тот сертификат, который использует клиент.

На уровне RP, посмотрите на:

Get-ADFSRelyingPartyTrust

[-SignedSamlRequestsRequired] [-SamlResponseSignature]

или глобально:

Get-ADFSProperties

SignedSamlRequestsRequired
SignSamlAuthnRequests

и проверьте:

Get-AdfsCertificate -CertificateType "Подпись токена"

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