Ошибка проверки подписи OneLogin .NET SAML

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

Я новичок в .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

person Jonathan Byers    schedule 07.10.2016    source источник


Ответы (1)


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

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

Вы столкнулись с CryptographicException . В быстром поиске в гугле нашел возможную причину (зависит от версии фреймворка, при использовании некоторых алгоритмов можно получить ошибку): https://blogs.msdn.microsoft.com/smondal/2012/08/24/signaturedescription-неможет-быть-создано-для-предоставленного-алгоритма-подписи/

и в stackoverflow аналогичный вопрос с решением: Подписанная проверка подписи XML для SSO SAML (с использованием sha256)

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

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

  • ComponentSpace (коммерческий)
  • OIOSAML (с открытым исходным кодом)
  • ITfoxtec (с открытым исходным кодом)
  • Kentor (с открытым исходным кодом)
  • Owin.Security.Saml (с открытым исходным кодом)
person smartin    schedule 07.10.2016