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

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

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

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

サブプロバイダーを設定すると、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 8.0)C#プロジェクトを作成しましょう。

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

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

      .NET 8プロジェクトにはバージョン4.0.0を使いましょう。

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

    4. 目標フレームワークをnet8.0に設定する:

      net8.0

    5. 他に必要な参考文献を追加してください:

      • Microsoft。AspNetCore.Authentication.OpenIdConnect (バージョン8.0.10)でOpenID Connect認証を有効にするためのもの。
      • Sitecore。Framework.Runtime.Abstractions (バージョン8.0.1)でランタイム抽象化の使用が可能になります。
      • Sitecoreへの言及。アイデンティティプロバイダーのベースクラスが必要な場合は Plugin.IdentityProviders プロジェクトを使います。:::
  2. 優先サブプロバイダーのサービスは、そのプロバイダーの指示に従って設定し、SignInScheme設定をidsrv.externalと指定します。

    !注AddOpenIdConnectのような認証ミドルウェアを使用するには、Microsoftを使用します。AspNetCore.Authentication.OpenIdConnectパッケージ(バージョン8.0.10以降)。このパッケージは.NET 8.0と互換性があります。

    C#におけるConfigureSitecore.csの例構成:

    using Microsoft.AspNetCore.Authentication;   using Microsoft.Extensions.Configuration;   using Microsoft.Extensions.DependencyInjection;   using Microsoft.Extensions.Logging;   using Sitecore.Framework.Runtime.Configuration;    

    namespace Sitecore.Plugin.IdentityProvider.YourProvider   {      public class ConfigureSitecore {            private readonly ILogger _logger;            private readonly AppSettings _appSettings;             

    public ConfigureSitecore(ISitecoreConfiguration scConfig, ILogger logger)            {                _logger = logger;                _appSettings = new AppSettings();                scConfig.GetSection(AppSettings.SectionName).Bind(_appSettings.YourProvider);            }             

    public void ConfigureServices(IServiceCollection services)            {                var provider = _appSettings.YourProvider;                 

    if (!provider.Enabled)                {                    return;                }                 

    _logger.LogDebug($"Configure '{provider.DisplayName}'. AuthenticationScheme = {provider.AuthenticationScheme}");

               new AuthenticationBuilder(services)                    .AddOpenIdConnect(provider.AuthenticationScheme, provider.DisplayName, options =>                    {                        options.SignInScheme = "idsrv.external";                        options.Authority = provider.Authority;                        options.ClientId = provider.ClientId;                        options.ClientSecret = provider.ClientSecret;                        options.ResponseType = "code";                        options.SaveTokens = true;                                              

    options.Scope.Clear();                        options.Scope.Add("openid");                        options.Scope.Add("profile");                        options.Scope.Add("email");                    });            }        }   }

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

    例設定XML

    IdS4-YourProvider Your Provider Name true https://your-provider.com
  4. オプションとして、Sitecoreインスタンスにサブプロバイダーを登録することもできます。

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

Sitecoreインスタンスのsitecore:federatedAuthentication

。 {application_root_folder}\App_Config\Sitecore\Owin.Authentication.IdentityServer\Sitecore.Owin.Authentication.IdentityServer.configファイルにはその例があります。

XMLの例

$(id) Your Provider Name extranet true

クレーム変換の設定

各外部アイデンティティプロバイダーごとにクレーム変換を設定することができます。これらはSitecoreが既に持っているものに似ていますが、外部アイデンティティプロバイダーがSitecore Identity Serverクライアントで外部クレームを使用できるようにするには、SIサーバー側でクレーム変換が必要です。

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

.profileとAPIリソースとしてのsitecore.profile.apiです。

sitecore.profileおよびsitecore.profile.apiのスコープには、以下の請求項が含まれています。

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

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

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

次に、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つあります:

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

  1. Sitecoreを通じたパスワード管理
  2. 特定のプロファイル特性の変更
  3. ユーザーパスワードの変更。対応するアイデンティティプロバイダーでパスワードを変更しなければなりません。

Configure Azure AD

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

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