Невозможно построить проекты IdentitySaml2
Я пытаюсь реализовать единый вход с использованием IdentitySaml2 для проверки подлинности, но проекты не создаются. Я использую.net Framework 4.7.2.
ОБНОВЛЕНО: Хотя я не мог построить основное исходное решение (ITfoxtec.Identity.Saml2). Мне удалось создать образец сайта и установить пакет nuget. Я также добавил файлы кода, такие как IdentityConfig, Authcontroller, DefaultClaimsAuthenticationManager и просмотры, и добавил параметры ниже в webconfig. Я не уверен в этих настройках и не нашел надлежащей документации. В настоящее время idpmedatadata создает исключение из-за неправильного URL.
<add key="Saml2:IdPMetadata" value="https://localhost:44305/metadata"/>
<add key="Saml2:Issuer" value="urn:itfoxtec:identity:saml2:testwebapp"/>
<add key="Saml2:SingleSignOnDestination" value="https://test-adfs.itfoxtec.com/adfs/ls/"/>
<add key="Saml2:SingleLogoutDestination" value="https://test-adfs.itfoxtec.com/adfs/ls/"/>
<add key="Saml2:SignatureAlgorithm" value="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/>
<add key="Saml2:SigningCertificateFile" value="~/App_Data/itfoxtec.identity.saml2.testwebapp_Certificate.pfx"/>
<add key="Saml2:SigningCertificatePassword" value="!QAZ2wsx"/>
<add key="Saml2:CertificateValidationMode" value="ChainTrust"/>
<add key="Saml2:RevocationMode" value="NoCheck"/>
1 ответ
Можете ли вы быть более конкретным в отношении исключения?
Если вы создаете решение ASP.NET MVC .NET 4.7.2, вам следует использовать пакет ITfoxtec.Identity.Saml2.Mvc версии 3.0.0. Я ожидаю, что это не в приложении.NET Core.
Вы можете найти примеры ее: https://github.com/ITfoxtec/ITfoxtec.Identity.Saml2/tree/master/test
ОБНОВЛЕНО: Компонент ITfoxtec Identity Saml2, выступающий в качестве проверяющей стороны, может быть настроен с метаданными IdP или без них.
Использование метаданных IdP
Конфигурация доверия IdP требует только метаданных:
<add key="Saml2:IdPMetadata" value="https://localhost:44305/metadata"/>
Метаданные IdP загружаются в IdentityConfig.RegisterIdentity()
как это:
var entityDescriptor = new EntityDescriptor();
entityDescriptor.ReadIdPSsoDescriptorFromUrl(new Uri(ConfigurationManager.AppSettings["Saml2:IdPMetadata"]));
if (entityDescriptor.IdPSsoDescriptor != null)
{
Saml2Configuration.SingleSignOnDestination = entityDescriptor.IdPSsoDescriptor.SingleSignOnServices.First().Location;
Saml2Configuration.SingleLogoutDestination = entityDescriptor.IdPSsoDescriptor.SingleLogoutServices.First().Location;
Saml2Configuration.SignatureValidationCertificates.AddRange(entityDescriptor.IdPSsoDescriptor.SigningCertificates);
}
else
{
throw new Exception("IdPSsoDescriptor not loaded from metadata.");
}
Метаданные могут быть загружены онлайн ReadIdPSsoDescriptorFromUrl(...)
или из файла ReadIdPSsoDescriptorFromFile(...)
или из строки ReadIdPSsoDescriptor(...)
Настройте IdP без метаданных
Доверие IdP требует конечных точек входа и выхода IdP, а также сертификата подписи IdP:
<add key="Saml2:SingleSignOnDestination" value="https://some-idp.test.com/login/"/>
<add key="Saml2:SingleLogoutDestination" value="https://some-idp.test.com/logout/"/>
<add key="Saml2:SignatureValidationCertificate" value="~/App_Data/IdP_signing_certificate.crt"/>
Конфигурация IdP загружается в IdentityConfig.RegisterIdentity()
как это:
Saml2Configuration.SingleSignOnDestination = new Uri(ConfigurationManager.AppSettings["Saml2:SingleSignOnDestination"]);
Saml2Configuration.SingleLogoutDestination = new Uri(ConfigurationManager.AppSettings["Saml2:SingleLogoutDestination"]);
Saml2Configuration.SignatureValidationCertificates.Add(CertificateUtil.Load(HttpContext.Current.Server.MapPath(ConfigurationManager.AppSettings["Saml2:SignatureValidationCertificate"])));
Идентификатор проверяющей стороны
Идентификатор проверяющей стороны unik:
<add key="Saml2:Issuer" value="urn:itfoxtec:identity:saml2:testwebapp"/>
Сертификат подписи
Требуемый алгоритм подписи, скорее всего, SHA-256:
<add key="Saml2:SignatureAlgorithm" value="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/>
Вместо загрузки сертификата подписи из файла, подобного этому:
<add key="Saml2:SigningCertificateFile" value="~/App_Data/itfoxtec.identity.saml2.testwebapp_Certificate.pfx"/>
<add key="Saml2:SigningCertificatePassword" value="!QAZ2wsx"/>
Сертификат может быть загружен по отпечатку из хранилища сертификатов Windows или по сертификату TLS в службе приложений Azure.
<add key="SigningCertificateThumbprint" value="XXXXX...XXXXX"/>
Тогда IdentityConfig.RegisterIdentity()
Необходимо изменить, чтобы загрузить сертификат по отпечатку:
Saml2Configuration.SigningCertificate = CertificateUtil.Load(StoreName.My, StoreLocation.CurrentUser, X509FindType.FindByThumbprint, ConfigurationManager.AppSettings["Saml2:SigningCertificateThumbprint"]);
Проверка сертификата
Цепочка сертификатов IdP и отзыв могут быть проверены при необходимости.
Обычно цепочка сертификатов и отзыв не проверяются:
<add key="Saml2:CertificateValidationMode" value="None"/>
<add key="Saml2:RevocationMode" value="NoCheck"/>
Требуется проверить цепочку сертификатов и отзыв:
<add key="Saml2:CertificateValidationMode" value="ChainTrust"/>
<add key="Saml2:RevocationMode" value="Online"/>