Sitecore Identityサーバーをフェデレーションゲートウェイとして使用してください

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

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

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

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

SIサーバーに含まれるAzure ADアイデンティティプロバイダーを有効にする必要があります。これを行う手順は {SI_server_root_folder}\sitecore\Sitecore.Plugin.IdentityProvider.AzureAd\Config\readme.txtファイルをご覧ください。

!noteOpenID ConnectとAzure Active Directoryを使ってウェブアプリケーションへのアクセスを認可することで、Azure ADをSIサーバーと連携させることができます

!注もし「リクエストで指定された返信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ファイルを作成します:

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

      適切なバージョンを指定してください。

    3. csprojファイルを編集して、Projectノードの後にを追加します。

    4. 他に必要な参照を追加してください: Sitecore。Framework.Runtime.Commandsでコマンドを有効にし、Sitecore。Framework.Runtime.Abstractionでランタイム抽象化を可能にし、プラグインの機能を構築する場合は他のプラグインへの参照も可能です。:::

  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つ、すなわちSIサーバー(Sitecore.Owin.Authentication.IdentityServer.config設定ファイルのSitecoreIdentityServer名)のみを知り、明示的に指定しない限りサブプロバイダーについては知りません。

サブプロバイダーを指定するのは以下の状況です:

  • サブプロバイダーを SitecoreIdentityServer 自体ではなく他のサイトにマッピングしたいのです。例えば、SIサーバーは shell サイトと admin サイトにマッピングされていますが、SIサーバーで設定されたAzure ADプロバイダーは websiteにマッピングしたいです。
  • GetSignInUrlInfoPipelineパイプラインを使っていて、特定のサブプロバイダーのサインインURLを取得して、ユーザーを直接サブプロバイダーのログインページにリダイレクトしたい(SIログインページは飛ばします)。

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

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

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

  • sitecore/federatedAuthentication/identityProvidersノードにidentityProviderノードを追加します。この構成ノードはnameパラメータの命名規則に従う必要があります。nameパラメータは次の形式でなければなりません

    _identity_provider/AuthenticationScheme、ここでgateway_identity_providerはSitecore直接通信するアイデンティティプロバイダー、AuthenticationSchemeはgateway_identity_providerで設定したサブアイデンティティプロバイダーの認証スキーム(例
    )です。

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

    • TriggerExternalSignOutとTransformationsプロパティはgateway_identity_providerノードから継承されており、上書きすることはできません。
    • このサブプロバイダーを有効にするには、gateway_identity_providerプロバイダーのEnabledプロパティをEnabledに設定する必要があります。

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

クレーム変換の設定

各外部アイデンティティプロバイダーごとにクレーム変換を設定することができます。これらはSitecoreが既に持っているものに似ていますが、以下の理由からSIサーバー側でクレーム変換を行う必要があります。

  • SIサーバーと他のSIクライアント(Sitecore自体でないクライアント)との通信にはSitecoreインスタンスは存在しません。例えば、非SitecoreアプリケーションがSIサーバーを外部プロバイダーとして使用した場合、そのアプリケーションはSIサーバー内で正規化されていない限り正規化されたクレームを受け取りません。
  • SIサーバーは、実際にSIクライアントが Scopesを用いて要求したクレームのみを返します。したがって、SIクライアントは自分たちに未知のクレームを受信しません。

デフォルトでは、Sitecore Identityは以下のカスタムスコープで動作します

.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のスコープには、以下の請求項が含まれています。

ユーザーに役割を与えるために:

  • 特定の入ってくるクレームを適切なロールクレームにマッピングします。例えば、90e5a2e5-4e3f-4f25-8beb-1238052fda8e Azure ADグループをsitecore\Authorの役割に変換する場合:

!注同じ名前のノードを複数追加しないでください。複数のノードが必要な場合は、ノード名をAzureGroupTransformation1、AzureGroupTransformation2、などと付けてください。

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

次に、configuration:sitecore:federatedAuthentication:propertyInitializer

。{application_root_folder}\App_Config\Sitecore\Owin.Authentication.IdentityServer\Sitecore.Owin.Authentication.IdentityServer.config fileにはその例があります:

変換された名前とメールの請求も同様の手順で、Sitecoreのユーザープロパティにマッピングしてください。

以下の例は、必須の請求項変換の必要性を示しています。

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

  • SIサーバーでは、 http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress を email請求にマッピングするためのクレーム変換を追加できます。 {SI_server_root_folder}\sitecore\Sitecore.Plugin.IdentityProvider.AzureAd\Config\Sitecore.Plugin.IdentityProvider.AzureAd.xml ファイルの例を参照してください。
  • 必要なクレームをSIサーバーに新たに登録し、クライアントがこのスコープを要求できるようにし、クライアントもこのスコープを要求できるようにします。

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

  1. ユーザーマネージャーで外部ユーザーの役割を読み取り削除すること。これらのロールはSitecoreに保存されていないためです。
  2. そのため、Access Viewerを使いましょう。
  3. ユーザーパスワードの変更。対応するアイデンティティプロバイダーでパスワードを変更しなければなりません。

Configure Azure AD

Sitecore IdentityサーバーでAzure ADを設定・使用する際には、以下のことを覚えておく必要があります:

  • ウェブのアプリケーション登録の「認証」タブの詳細設定でIDトークンのチェックボックスを確認してください。
  • アプリケーションマニフェストで groupMembershipClaims 設定の値を SecurityGroupに設定します。
  • replyUrls設定はレガシー版のアプリケーション登録のみです。代わりにreplyUrlsWithTypeを使いましょう。
この記事を改善するための提案がある場合は、 お知らせください!