2

認証に IdentitySaml2 を使用して SSO を実装しようとしていますが、プロジェクトがビルドされていません。.net フレームワーク 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"/>
4

1 に答える 1

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 証明書ストアの拇印または 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"/>
于 2019-02-07T08:29:08.997 に答える