カプセル化されたトークンのサポート encapsulated-token-support
はじめに introduction
デフォルトでは、AEMはトークン認証ハンドラーを使用して各要求を認証します。 ただし、認証要求を処理するために、トークン認証ハンドラーは要求ごとにリポジトリにアクセスする必要があります。 これは、認証状態の維持に cookie が使用されるためです。 論理的には、後続のリクエストを検証するために、状態をリポジトリ内に保持する必要があります。 つまり、認証メカニズムはステートフルです。
これは、水平的な拡張性に特に重要です。 以下に示すパブリッシュファームのようなマルチインスタンス設定では、最適な方法でロードバランシングを実現できません。 ステートフル認証では、永続化された認証状態は、ユーザーが最初に認証されたインスタンスでのみ使用できます。
例として、次のシナリオを考えてみましょう。
ユーザーはパブリッシュインスタンス 1 で認証される場合がありますが、後続のリクエストがパブリッシュインスタンス 2 に送られる場合、そのインスタンスはその永続認証状態を持ちません。これは、その状態がパブリッシュ 1 とパブリッシュ 2 に独自のリポジトリがあるからです。
この解決策は、ロードバランサーレベルでスティッキー接続を設定することです。 スティッキー接続を使用すると、ユーザーは常に同じパブリッシュインスタンスに向けられます。 その結果、真に最適なロードバランシングは実現できません。
パブリッシュインスタンスが使用できなくなった場合、そのインスタンスで認証されたすべてのユーザーのセッションが失われます。 これは、認証 cookie を検証するにはリポジトリへのアクセスが必要だからです。
カプセル化されたトークンを使用したステートレス認証 stateless-authentication-with-the-encapsulated-token
AEM の新しいカプセル化されたトークンサポートを使用したステートレス認証により、水平方向のスケーラビリティを確保できます。
カプセル化されたトークンは、AEM がリポジトリにアクセスすることなく、オフラインで安全に認証情報を作成および検証できるようにするための暗号化技術です。これにより、すべてのパブリッシュインスタンスで認証リクエストが発生し、スティッキー接続が不要になります。 また、リポジトリは認証要求ごとにアクセスする必要がないので、認証パフォーマンスを向上させる利点もあります。
MongoMK オーサーインスタンスと TarMK パブリッシュインスタンスによる地理的に分散したデプロイメントでこれがどのように機能するかを以下に示します。
カプセル化されたトークンの設定 configuring-the-encapsulated-token
-
スティッキーセッションが有効になっている、または
-
同期の開始時に、AEM で既にユーザーが作成されている。つまり、同期プロセスの実行中にハンドラーがユーザーを 作成 するような状況では、暗号化されたトークンはサポートされません。
カプセル化されたトークンを設定する際には、次の点を考慮する必要があります。
- 暗号化が関係するので、すべてのインスタンスに同じ HMAC キーが必要です。 AEM 6.3 以降、キー資料はリポジトリには格納されなくなり、実際のファイルシステムに格納されます。 この点を念頭に置いて、キーをレプリケートする最善の方法は、キーをレプリケート先のターゲットインスタンスのファイルシステムからコピーすることです。 詳しくは、以下の「HMAC キーのレプリケーション」を参照してください。
- カプセル化されたトークンを有効にする必要があります。 これは、Web コンソールを通じておこなえます。
HMAC キーのレプリケート replicating-the-hmac-key
HMAC 鍵は、/etc/key
のバイナリプロパティとしてリポジトリに存在します。その横にある View リンクをクリックすることで別個にダウンロードできます。
インスタンス間で鍵をレプリケーションするには、次の手順に従います。
-
コピーする鍵要素を含む AEM インスタンス(通常はオーサーインスタンス)にアクセスします。
-
ローカルファイルシステム内で、
com.adobe.granite.crypto.file
を見つけます。例えば、次のパスにあります。- <author-aem-install-dir>/crx-quickstart/launchpad/felix/bundle21
各フォルダー内の
bundle.info
ファイルは、バンドル名を示します。 -
データフォルダーに移動します。例:
<author-aem-install-dir>/crx-quickstart/launchpad/felix/bundle21/data
-
HMAC ファイルとマスターファイルをコピーします。
-
次に、HMAC キーの複製先のターゲットインスタンスに移動し、データフォルダーにアクセスします。例:
<publish-aem-install-dir>/crx-quickstart/launchpad/felix/bundle21/data
-
前の手順でコピーした 2 つのファイルを貼り付けます。
-
ターゲットインスタンスが既に実行されている場合は、Crypto バンドルを更新します。
-
鍵のレプリケーション先のすべてのインスタンスに対して上記の手順を繰り返します。
カプセル化されたトークンの有効化 enabling-the-encapsulated-token
HMAC 鍵がレプリケートされたら、Web コンソールを介してカプセル化されたトークンを有効化できます。
- ブラウザーで
https://serveraddress:port/system/console/configMgr
を指定します。 - という名前のエントリを探します。 Day CRX Token Authentication Handler をクリックします。
- 次の画面で「Enable encapsulated token support」ボックスにチェックマークを入れて「Save」を押します。