Не удалось загрузить сертификат X.509 из файла - PullRequest
0 голосов
/ 28 января 2019

Я использую API SAML2.0 для ASP.net MVC, и я использовал openssl для создания файлов закрытого и открытого ключей и использовал пароль для закрытого файла.Он сгенерировал два файла ca.key и cas.pem, я использовал файл ca.key как закрытый ключ, но я получаю эту ошибку

Дополнительная информация: Не удалось загрузить сертификат X.509из файла D: \ Test Web Projects \ TestSaml \ TestSaml \ Certificates \ ca.key.

Мои пользователи входят в мое приложение mvc, процесс входа не имеет ничего общего с SAML.Я просто проверяю пользователей по моей БД.Причина, по которой я использую SAML2.0, заключается в том, что мне нужно направить своих пользователей для процесса оплаты на другую внешнюю страницу, которая является моим поставщиком услуг.Поэтому, как только они нажимают на кнопку на моей странице, они должны быть перенаправлены на другой сайт.Ниже приведен пример кода, который я создал для проверки его работоспособности.

Web.config

<?xml version="1.0" encoding="utf-8"?>
<!--
For more information on how to configure your ASP.NET application, please visit
http://go.microsoft.com/fwlink/?LinkId=301880
-->
<configuration>
<appSettings>
  <add key="TargetURL" value="https://btat2.paybill.com/consumer/SSO/SSOLogin?clientId=ReadyCapital"/>
  <add key="webpages:Version" value="3.0.0.0" />
  <add key="webpages:Enabled" value="false" />
  <add key="ClientValidationEnabled" value="true" />
  <add key="UnobtrusiveJavaScriptEnabled" value="true" />
</appSettings>
<system.web>
  <compilation debug="true" targetFramework="4.5" />
  <httpRuntime targetFramework="4.5" />
</system.web>
</configuration>

Saml.config

<?xml version="1.0"?>
<SAMLConfiguration xmlns="urn:componentspace:SAML:2.0:configuration">
<IdentityProvider Name="https://TestSaml"
       Description="Test Identity Provider"       
       LocalCertificateFile="Certificates\ca.key"
       LocalCertificatePassword="readycapital"/>

<PartnerServiceProviders>
  <!-- MVC example -->
  <PartnerServiceProvider Name="urn:oasis:names:tc:SAML:2.0:assertion"
          Description="MVC Example Service Provider"          
          SignSAMLResponse="true"
          SignAssertion="false"
          EncryptAssertion="true"
          AssertionConsumerServiceUrl="http://www.paybill.com/V2/Test/Login.aspx"          
          PartnerCertificateFile="Certificates\btat2.cert"/>
</PartnerServiceProviders>
</SAMLConfiguration>

Контроллер

public ActionResult Index(Profile profile)
   {
    string targetUrl = WebConfigurationManager.AppSettings["TargetURL"];
    string userName = "00373219101";// WebConfigurationManager.AppSettings["SubjectName"]; 
    SAMLAttribute[] attributes = new SAMLAttribute[2];
    SAMLAttribute attribute = new SAMLAttribute("UserEmailAddress", SAMLIdentifiers.AttributeNameFormats.Unspecified, null, string.Empty);
    attributes[0] = attribute;

    SAMLAttribute attribute2 = new SAMLAttribute("MiscellaneousData", SAMLIdentifiers.AttributeNameFormats.Unspecified, null, string.Empty);
    attributes[1] = attribute2;

    SAMLIdentityProvider.InitiateSSO(Response, userName, attributes, targetUrl);
}

1 Ответ

0 голосов
/ 28 января 2019
  • Проверяли ли вы, что WebServer действительно может получить доступ к файлам?Возможно, используйте Microsoft Windows Sysinternals Process Monitor и убедитесь, что операция чтения прошла успешно.

  • Замените автономный файл .key на файл .pfx, содержащий как сертификат, так и закрытый ключ иссылка на это в IdentityProvider / @ LocalCertificateFile

...