Как использовать библиотеку ComponentSpace для программного обновления кэшированных файлов сертификатов X509 при обновлении SAMLController.Configurations

Добрый день всем,

Я использую ComponentSpace в качестве поставщика услуг, чтобы установить единый вход SAML2 для своих клиентов. Клиенты используют своих собственных провайдеров идентификации для аутентификации и получения доступа к моему веб-приложению MVC5. Проблема, с которой я сталкиваюсь, заключается в том, что, когда клиент хочет обновить свои файлы сертификатов X509, я обновляю физические файлы динамически, но мне нужно выполнить сброс IIS, чтобы получить новые файлы сертификатов, которые будут использоваться. Как можно избежать сброса IIS и заставить ComponentSpace использовать новые файлы сертификатов X509 при аутентификации. Пример моего кода ниже.

var samlConfiguration = new 
ComponentSpace.SAML2.Configuration.SAMLConfiguration();

var ssoUrl = "https://www.ssoUrl/Consumer";
var ssoName ="https://www.ssoName";

var localServiceProviderConfiguration = new LocalServiceProviderConfiguration()
{
  Name = ssoName,
  AssertionConsumerServiceUrl = ssoUrl
};

samlConfiguration.LocalServiceProviderConfiguration = localServiceProviderConfiguration ;

var certNamePrimary = ConfigurationManager.AppSettings["Certificate_Path"] + "cert-A.cer";

var certNameSecondary = ConfigurationManager.AppSettings["Certificate_Path"] + "cert-B.cer";

var partnerIdentityProviderConfiguration = new 
ComponentSpace.SAML2.Configuration.PartnerIdentityProviderConfiguration()
{
    Name = clientConfig.PartnerIdPName,
    SingleSignOnServiceUrl = clientConfig.IdPSingleSignOnServiceURL,
    SignAuthnRequest = false,
    WantSAMLResponseSigned = false,
    WantAssertionEncrypted = false,
    WantAssertionSigned = true,
    PartnerCertificateFile = certNamePrimary ,
    SecondaryPartnerCertificateFile = certNameSecondary 
};

samlConfiguration.PartnerIdentityProviderConfigurations.AddPartnerIdentityProvider(partnerIdentityProviderConfiguration );

if (ComponentSpace.SAML2.SAMLController.Configurations.Keys.Contains(ssoUrl))
{
   ComponentSpace.SAML2.SAMLController.Configurations.Remove(ssoUrl);                        
   ComponentSpace.SAML2.SAMLController.Configurations.Add(ssoUrl, samlConfiguration);
}
else
    ComponentSpace.SAML2.SAMLController.Configurations.Add(ssoUrl, samlConfiguration);

ComponentSpace.SAML2.SAMLController.ConfigurationID = ssoUrl;
SAMLServiceProvider.InitiateSSO(Response, null, "http://company.com/adfs/services/trust");

0 ответов

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