例外についてもっと具体的に教えてください。
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 証明書ストアの拇印または Azure App Service の TLS 証明書によって読み込むことができます。
<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"/>