2016-10-07 14 views
2

Я загружаю https://github.com/onelogin/dotnet-saml и тестирую против внутреннего IdP. Первоначально я думал, что ошибка связана с тем, что сертификат SHA256 (так как тот, на который ссылается в своем коде, является 1024-бит SHA1). Я изменил сертификат IdP для соответствия этим критериям, но все равно получаю ошибку ниже после аутентификации на IdP.OneLogin .NET Ошибка SAML CheckSignature

Я новичок в .net, но писал PHP еще 10 лет.

Line 88: return signedXml.CheckSignature(certificate.cert, true); 
Source File: c:\inetpub\dotnet-saml-master\App_Code\Saml.cs Line: 88 

[CryptographicException: SignatureDescription could not be created for the signature algorithm supplied.] 
System.Security.Cryptography.Xml.SignedXml.CheckSignedInfo(AsymmetricAlgorithm key) +240118 
System.Security.Cryptography.Xml.SignedXml.CheckSignature(AsymmetricAlgorithm key) +44 
System.Security.Cryptography.Xml.SignedXml.CheckSignature(X509Certificate2 certificate, Boolean verifySignatureOnly) +532 
OneLogin.Saml.Response.IsValid() in c:\inetpub\dotnet-saml-master\App_Code\Saml.cs:88 
_Default.Page_Load(Object sender, EventArgs e) in c:\inetpub\dotnet-saml-master\Consume.aspx.cs:28 
System.Web.UI.Control.OnLoad(EventArgs e) +109 
System.Web.UI.Control.LoadRecursive() +68 
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +4498 

ответ

1

Инструментарий использует библиотеку System.Security.Cryptography.Xml, которая включает в себя класс signedXml.

Этот класс имеет метод CheckSignature, который ожидает в качестве параметра объекта X509Certificate2 использовать для проверки Подписи и второй параметр для определения только проверки подлинности подписи или проверки подлинности подписи и сертификата x509.

Вы испытываете CryptographicException. В быстром поиске Google я нашел возможную причину (зависит от каркаса версии, вы можете получить сообщение об ошибке при использовании некоторых алгоритмов): https://blogs.msdn.microsoft.com/smondal/2012/08/24/signaturedescription-could-not-be-created-for-the-signature-algorithm-supplied/

и на StackOverflow аналогичный вопрос с раствором: Signed XML signature verification for SSO SAML (Using sha256)

BTW: Набор инструментов dotnet-saml составляет 6 лет, и это было доказательством концепции реализации SAML на .NET.

OneLogin ведет работу над выпуском нового инструментария для .NET, но то время, если вы хотите использовать, что на производстве я могу предложить вам несколько вариантов: