Ошибка 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

Спасибо за уделенное время!


person jerem    schedule 29.03.2018    source источник


Ответы (3)


Я не знаком ни с 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

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

person s1mpl3    schedule 03.04.2018
comment
Привет, @ s1mpl3, спасибо, что нашли время ответить. В вашем случае система единого входа вообще не работала, пока вы не решите свою проблему? Потому что в нашем случае SSO работает, но у нас есть проблема перенаправления для первого входа в систему (после того, как пользователь аутентифицируется со своими учетными данными в первый раз) - person jerem; 05.04.2018
comment
Проблема, которую я описал, касалась одного запроса от IDp к SP. Разные провайдеры, но та же ошибка неправильная подпись. - person s1mpl3; 05.04.2018

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

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

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

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

Get-ADFSRelyingPartyTrust

[-SignedSamlRequestsRequired] [-SamlResponseSignature]

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

Get-ADFSProperties

SignedSamlRequestsRequired
SignSamlAuthnRequests

и проверьте:

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

person rbrayb    schedule 05.04.2018
comment
Привет, @nzpcmad, под этой ошибкой вы имеете в виду тот факт, что у меня проблема с перенаправлением только для 1-го входа в систему или вы говорите о MSIS0038 в целом? Как вы думаете, моя ошибка может произойти из-за того, что файлы cookie сохранены в браузере? Я пытаюсь удалить все файлы cookie в моем браузере, и кажется, что это работает ... - person jerem; 09.04.2018
comment
Нет - генерал. По моему опыту, эта проблема не связана с файлами cookie. - person rbrayb; 09.04.2018

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

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

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

person Patricia Li    schedule 11.04.2018