Sitecore Identityサーバーをフェデレーション ゲートウェイとして使用する

Version: 10.1
日本語翻訳に関する免責事項

このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。

これはIdentityServer4に基づいているため、Sitecore Identity (SI) サーバーを1つ以上の外部IDプロバイダー (またはサブプロバイダー、inner providersとも呼ばれます) へのゲートウェイとして使用できます。 IdentityServer4フェデレーション ゲートウェイ には、この概念に関する詳細情報があります。

サブプロバイダーを構成すると、このプロバイダーのログイン ボタンがSIサーバーのログイン画面に表示されます。

SIサーバーに含まれているAzure AD IDプロバイダーを有効にする必要があります。これを行う手順については、{SI_server_root_folder}\sitecore\Sitecore.Plugin.IdentityProvider.AzureAd\Config\readme.txtファイルを参照してください。

手記

「リクエストで指定された応答URLが、アプリケーション用に設定された応答URLと一致しません」というエラーが表示された場合は、アプリケーション マニフェストのreplyUrlsセクションにあるhttps://SI Server host name/signin-oidc URLを使用します。

Sitecore Identityサーバーでサブプロバイダーを設定する

SIサーバーにサブプロバイダーを追加するには、次のようにします。

  1. Visual Studioで新しいプラグインを作成します。

    1. Class Library (.NET Standard) C# プロジェクトを作成します。

    2. リポジトリのルートにglobal.jsonファイルを作成します。

      RequestResponse
      {
          "msbuild-sdks": {
              "Sitecore.Framework.Runtime.Build": "1.1.0"
          }
      }

      必要に応じてバージョンを指定します。

    3. csprojファイルを編集します:Projectノードの後に<Sdk Name="Sitecore.Framework.Runtime.Build" />を追加します。

    4. 必要な他の参照を追加します: コマンドを有効にするSitecore.Framework.Runtime.Commands 、ランタイム抽象化を使用して有効にするSitecore.Framework.Runtime.Abstractions 、プラグインに既にある機能に基づいて構築する場合は他のプラグインへの参照。

  2. このプロバイダーの指示に従って、優先サブプロバイダーのサービスを構成し、SignInScheme設定をidsrv.externalとして指定します。

    手記

    AddOpenIdConnectなどの認証ミドルウェアを使用するには、Microsoft.AspNetCore.Authentication.AuthenticationBuilderタイプのオブジェクトが必要です。プラグインでservices.AddAuthentication()の代わりにnew Microsoft.AspNetCore.Authentication.AuthenticationBuilder(services)を使用してください。

  3. サブプロバイダーを構成に登録します。 {SI_server_root_folder}\sitecore\Sitecore.Plugin.IdentityProvider.AzureAd\Config\Sitecore.Plugin.IdentityProvider.AzureAd.xmlファイルには、この例があります。

  4. 必要に応じて、Sitecoreインスタンスにサブプロバイダーを登録します。

サブプロバイダーをSitecoreインスタンスに登録する

デフォルトでは、Sitecoreインスタンスは1つの外部IDプロバイダー (SIサーバー (Sitecore.Owin.Authentication.IdentityServer.config設定ファイルのSitecoreIdentityServer名) のみを認識し、明示的に指定しない限り、サブプロバイダーについては認識しません。

サブプロバイダは、次の状況で指定します。

  • サブプロバイダーをSitecoreIdentityServer自体ではなく、他のサイトにマップする必要があります。たとえば、SIサーバーはshellサイトとadminサイトにマップされていますが、SIサーバーで構成されたAzure ADプロバイダーをwebsiteにマップするとします。

  • GetSignInUrlInfoPipelineパイプラインを使用し、特定のサブプロバイダーのサインインURLを取得して、ユーザーをサブプロバイダーのログイン ページに直接リダイレクトする (SIログイン ページをスキップする) 場合。

手記

サブプロバイダーで新しいログイン エンドポイントを使用するために、Sitecoreにサブプロバイダーを登録することはオプションです。SIサーバーで組み込みのAzure ADサブプロバイダーを有効にし、このURL $(loginPath)shell/SitecoreIdentityServer/IdS4-AzureAdshellサイトのloginPage属性に指定すると、シェル ユーザーはAzure ADを使用して認証でき、SIサーバーのログイン ページをスキップできます

SIサーバーにAzure ADを登録するには、AuthenticationScheme設定の値をIdS4-AzureAdとして指定します。

Sitecoreでサブプロバイダーを登録するには:

  • sitecore/federatedAuthentication/identityProvidersノードにidentityProviderノードを追加します。この構成ノードは、nameパラメーターの命名規則に従う必要があります。nameパラメーターは、Sitecoreが直接通信するIDプロバイダー、gateway_identity_providerAuthenticationSchemegateway_identity_providerで設定したサブアイデンティティ プロバイダー (IdS4-AzureAdなど) の認証スキームであるgateway_identity_provider/AuthenticationSchemeの形式にする必要があります。

    考慮すべきいくつかの制限があります。

    • TriggerExternalSignOutプロパティとTransformationsプロパティはgateway_identity_providerノードから継承され、オーバーライドすることはできません。

    • このサブプロバイダーを有効にするには、gateway_identity_providerプロバイダーのEnabledプロパティをEnabledに設定する必要があります。

App_Config\Sitecore\Owin.Authentication.IdentityServer\Sitecore.Owin.Authentication.IdentityServer.config構成ファイルには、Azure ADサブプロバイダーを登録する例があります。

要求変換を構成する

要求変換は、外部IDプロバイダーごとに構成できます。これらはSitecoreにすでに備わっているものと似ていますが、次の理由からSIサーバー側でクレーム変換を行う必要があります。

  • SIサーバーと他のSIクライアント (Sitecore自体ではないクライアント) との間の通信には、Sitecoreインスタンスはありません。たとえば、Sitecore以外のアプリケーションがSIサーバーを外部プロバイダーとして使用している場合、そのアプリケーションはSIサーバーで正規化されていない限り、正規化されたクレームを受け取りません。

  • SIサーバーは、SIクライアントによって実際に要求されたクレームのみを返します。 Scopes.したがって、SIクライアントは、不明なクレームを受け取りません。

デフォルトでは、Sitecore IdentityはIDリソースとしてsitecore.profile 、APIリソースとしてsitecore.profile.apiのカスタム スコープで動作します。

手記

Sitecoreの要求されたスコープは、次のパイプラインで変更できます: sitecore/pipelines/owin.identityProviders/processorid=SitecoreIdentityServer/scopes).

Sitecore.Plugin.Authentication.OpenIdConnectパッケージを使用するアプリケーションの場合は、{application_root_folder}\sitecore\Sitecore.Plugin.Authentication.OpenIdConnect\Config\openIdConnect.xmlファイルを確認してください。設定パスはSitecore:Authentication:OpenIdConnectOptions:Scope:...です。

手記

デフォルトのスコープ定義は、{SI_server_root_folder}\sitecore\Sitecore.Plugin.IdentityServer\Config\identityserver.xmlファイルにあります。

sitecore.profileスコープとsitecore.profile.apiスコープの両方に、次の要求が含まれています。

  • 名前

  • 電子メール

  • 役割

  • http://www.sitecore.net/identity/claims/isAdmin

  • http://www.sitecore.net/identity/claims/originalIssuer

ユーザーにロールを付与するには:

  • 特定の入力方向の要求を適切なロールの要求にマップします。たとえば、90e5a2e5-4e3f-4f25-8beb-1238052fda8e Azure ADグループをsitecore\Authorロールに変換するには、次のようにします。

    RequestResponse
    <AzureGroupTransformation type="Sitecore.Plugin.IdentityProviders.DefaultClaimsTransformation, Sitecore.Plugin.IdentityProviders">
                    <SourceClaims>
                                    <Claim1 type="groups" value="90e5a2e5-4e3f-4f25-8beb-1238052fda8e" />
                    </SourceClaims>
                    <NewClaims>
                                    <Claim1 type="role" value="sitecore\Author" />
                    </NewClaims>
    </AzureGroupTransformation>
    
手記

同じ名前のノードを複数追加しないでください。複数のノードが必要な場合は、ノードにAzureGroupTransformation1AzureGroupTransformation2などの名前を付けます。

ユーザーを管理者にするには:

  • http://www.sitecore.net/identity/claims/isAdminを追加し、値をtrueに設定します (Sitecoreの管理者ユーザーであることは、特定のロールを持つことではありません)。たとえば、a9bb60b6-40d2-4e2a-88b8-0e47ee2d078e Azure ADグループのすべてのユーザーをSitecore管理者ユーザーにするには、次のようにします。

    RequestResponse
    <AzureADUserToAdminUser type="Sitecore.Plugin.IdentityProviders.DefaultClaimsTransformation, Sitecore.Plugin.IdentityProviders">
                    <SourceClaims>
                                    <Claim1 type="groups" value="a9bb60b6-40d2-4e2a-88b8-0e47ee2d078e" />
                    </SourceClaims>
                    <NewClaims>
                                    <Claim1 type="http://www.sitecore.net/identity/claims/isAdmin" value="true"/>
                    </NewClaims>
    </AzureADUserToAdminUser>

次に、Sitecoreのconfiguration:sitecore:federatedAuthentication:propertyInitializer:mapsノードにクレームをマッピングします。 この{application_root_folder}\App_Config\Sitecore\Owin.Authentication.IdentityServer\Sitecore.Owin.Authentication.IdentityServer.config fileには、次のような例があります。

RequestResponse
<propertyInitializer>
    <maps>
        <map name="set IsAdministrator" type="Sitecore.Owin.Authentication.Services.DefaultClaimToPropertyMapper, Sitecore.Owin.Authentication">
            <data hint="raw:AddData">
                <source name="http://www.sitecore.net/identity/claims/isAdmin" value="true" />
                <target name="IsAdministrator" value="true" />
            </data>
        </map>
    </maps>
</propertyInitializer>

変換された名前と電子メールの要求についても同様の手順を使用して、Sitecoreのユーザー プロパティにマッピングします。

次の例は、必須の要求変換を使用する必要性を示しています。

サブプロバイダーがhttp://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress要求を含むIDを返した場合、どのSIクライアントでもそのIDを取得することはできません。次の2つのオプションがあります。

  • SIサーバーでは、要求変換を追加して、http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddressemail要求にマップできます。 {SI_server_root_folder}\sitecore\Sitecore.Plugin.IdentityProvider.AzureAd\Config\Sitecore.Plugin.IdentityProvider.AzureAd.xmlファイルの例を参照してください。

  • SIサーバーに必要な要求を使用して新しいスコープを登録し、クライアントがこのスコープを要求できるようにし、クライアントからこのスコープを要求できるようにします。

Sitecoreが外部ユーザーを表す永続的なユーザーを作成する場合、いくつかの制限があります。サイトコアは、そのようなユーザーに対して以下の機能をサポートしていません。

  1. User Managerの外部ユーザーのロールの読み取りと削除 (これらのロールはSitecoreに保存されないため)。

  2. このため、Access Viewerを使用します。

  3. ユーザーパスワードの変更。対応するIDプロバイダーでパスワードを変更する必要があります。

Azure ADを構成する

Sitecore IdentityサーバーでAzure ADを設定して使用する場合は、次の点に注意する必要があります。

  • アプリケーション登録のWeb - Authenticationタブの詳細設定でID tokensチェックボックスにチェックを入れます。

  • アプリケーション マニフェストのgroupMembershipClaims設定の値をSecurityGroupに設定します。

  • replyUrlsは、レガシーバージョンのアプリケーション登録でのみ構成できます。代わりにreplyUrlsWithTypeを使用してください。

何かフィードバックはありますか?

この記事を改善するための提案がある場合は、