Sitecore Identityサーバーをフェデレーションゲートウェイとして使用してください
このページの翻訳は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サーバーにサブプロバイダーを追加するには:
-
Visual Studioで新しいプラグインを作成する:
-
Class Library(.NET 8.0)C#プロジェクトを作成しましょう。
-
リポジトリのルートにglobal.jsonファイルを作成します:
{ "msbuild-sdks": { "Sitecore.Framework.Runtime.Build": "4.0.0" } }
.NET 8プロジェクトにはバージョン4.0.0を使いましょう。
-
csprojファイルを編集して、Projectノードの後に
を追加します。 -
目標フレームワークをnet8.0に設定する:
net8.0 -
他に必要な参考文献を追加してください:
- Microsoft。AspNetCore.Authentication.OpenIdConnect (バージョン8.0.10)でOpenID Connect認証を有効にするためのもの。
- Sitecore。Framework.Runtime.Abstractions (バージョン8.0.1)でランタイム抽象化の使用が可能になります。
- Sitecoreへの言及。アイデンティティプロバイダーのベースクラスが必要な場合は Plugin.IdentityProviders プロジェクトを使います。:::
-
-
優先サブプロバイダーのサービスは、そのプロバイダーの指示に従って設定し、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"); }); } } }
-
構成にサブプロバイダーを登録してください。 {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 -
オプションとして、Sitecoreインスタンスにサブプロバイダーを登録することもできます。
Sitecoreインスタンスにサブプロバイダーを登録する
Sitecoreインスタンスのsitecore:federatedAuthentication
。 {application_root_folder}\App_Config\Sitecore\Owin.Authentication.IdentityServer\Sitecore.Owin.Authentication.IdentityServer.configファイルにはその例があります。XMLの例
クレーム変換の設定
各外部アイデンティティプロバイダーごとにクレーム変換を設定することができます。これらはSitecoreが既に持っているものに似ていますが、外部アイデンティティプロバイダーがSitecore Identity Serverクライアントで外部クレームを使用できるようにするには、SIサーバー側でクレーム変換が必要です。
デフォルトでは、Sitecore Identityは以下のカスタムスコープで動作します
.profileとAPIリソースとしてのsitecore.profile.apiです。sitecore.profileおよびsitecore.profile.apiのスコープには、以下の請求項が含まれています。
- name
- role
- http://www.sitecore.net/identity/claims/isAdmin
ユーザーに役割を与えるために:
-
特定の入ってくるクレームを適切なロールクレームにマッピングします。例えば、90e5a2e5-4e3f-4f25-8beb-1238052fda8e Azure ADグループをsitecore\Authorの役割に変換する場合:
ユーザーを管理者にするには:
-
http://www.sitecore.net/identity/claims/isAdminを加え、値をtrueに設定します(Sitecoreの管理者ユーザーであることは特定の役割を持つことではありません)。例えば、a9bb60b6-40d2-4e2a-88b8-0e47ee2d078e Azure ADグループのすべてのユーザーを管理者ユーザー Sitecore作成する場合:
次に、configuration:sitecore:federatedAuthentication:propertyInitializer
。{application_root_folder}\App_Config\Sitecore\Owin.Authentication.IdentityServer\Sitecore.Owin.Authentication.IdentityServer.config fileにはその例があります:変換された名前とメールの請求も同様の手順で、Sitecoreのユーザープロパティにマッピングしてください。
以下の例は、必須の請求項変換の必要性を示しています。
Sitecoreが外部ユーザーを表す永続ユーザーを作成する際には、いくつかの制限があります。Sitecoreはそのようなユーザーに対して以下の機能をサポートしていません。
- Sitecoreを通じたパスワード管理
- 特定のプロファイル特性の変更
- ユーザーパスワードの変更。対応するアイデンティティプロバイダーでパスワードを変更しなければなりません。
Configure Azure AD
Sitecore IdentityサーバーでAzure ADを設定・使用する際には、以下のことを覚えておく必要があります:
- ウェブのアプリケーション登録の「認証」タブの詳細設定でIDトークンのチェックボックスを確認してください。
- アプリケーションマニフェストで groupMembershipClaims 設定の値を ApplicationGroupに設定します。
- replyUrls設定はレガシー版のアプリケーション登録のみです。代わりにreplyUrlsWithTypeを使いましょう。