サーバーサイド API のアクセストークンの生成

一部のアーキテクチャでは、AEM インフラストラクチャの外部にあるサーバーにホストされているアプリケーションから AEM as a Cloud Service への呼び出しの実行がベースになっています。例えば、モバイルアプリケーションがサーバーを呼び出し、その後、サーバーが AEM as a Cloud Service に対して API リクエストを行います。

サーバー間フローと簡略化した開発フローを以下に示します。認証プロセスに必要なトークンの生成には、AEM as a Cloud Service 開発者コンソールを使用します。

サーバー間フロー

IMS 組織管理者の役割を持ち、AEM オーサー上の「AEM ユーザー」または「AEM 管理者」製品プロファイルのメンバーでもあるユーザーは、AEM as a Cloud Service の資格情報のセットを生成できます。各資格情報は、証明書 (公開鍵)、秘密鍵、および clientIdclientSecret から成るテクニカルアカウントを含む JSON ペイロードです。その資格情報は後で、AEM as a Cloud Service 環境管理者の役割を持つユーザーによって取得され、AEM 以外のサーバーにインストールされることになるので、秘密鍵として慎重に取り扱う必要があります。この JSON 形式のファイルには、AEM as a Cloud Service API との統合に必要なすべてのデータが含まれています。このデータを使用して、署名済み JWT トークンを作成します。このトークンは、Adobe IMS(Identity Management Services)との間で IMS アクセストークンと交換されます。その後、このアクセストークンをベアラー認証トークンとして使用して、AEM as a Cloud Service にリクエストを行うことができます。資格情報はデフォルトで 1 年後に期限切れになりますが、必要に応じて更新できます。詳しくは、こちらを参照してください。

サーバー間フローは次のステップで構成されます。

  • 開発者コンソールから AEM as a Cloud Service 資格情報を取得する
  • AEM に対して呼び出しを行う AEM 以外のサーバーに AEM as a Cloud Service 資格情報をインストールする
  • JWT トークンを生成し、そのトークンをアドビの IMS API を使用してアクセストークンと交換する
  • アクセストークンをベアラー認証トークンに使用して AEM API を呼び出す
  • AEM 環境のテクニカルアカウントユーザーに適切な権限を設定する

AEM as a Cloud Service 資格情報の取得

AEM as a Cloud Service の Developer Console にアクセスすると、特定の環境向けの「統合」タブが表示されます。AEM as a Cloud Service 環境管理者の役割を持つユーザーは、資格情報を作成、表示、管理できます。

新しいテクニカルアカウントを作成」ボタンをクリックすると、選択したポッドにかかわらず、環境のオーサー層とパブリッシュ層用のクライアント ID、クライアントシークレット、秘密鍵、証明書、設定を含む、新しい資格情報のセットが作成されます。

新しいテクニカルアカウントの作成

新しいブラウザータブが開き、資格情報が表示されます。このビューで、ステータスタイトルの横にあるダウンロードアイコンをクリックすると、資格情報をダウンロードできます。

資格情報のダウンロード

資格情報が作成されると、その資格情報が「統合」セクションの「テクニカルアカウント」タブに表示されます。

資格情報の表示

ユーザーは、後で表示アクションを使用して資格情報を表示できます。また、証明書を更新または取り消す必要がある場合に備えて、後述のように、ユーザーは新しい秘密鍵または証明書を作成することで、同じテクニカルアカウントの資格情報を変更できます。

AEM as a Cloud Service の環境管理者の役割を持つユーザーは、後で追加のテクニカルアカウントの新しい資格情報を作成できます。これは、複数の API を使用しており、それらのアクセス要件が異なる場合に役立ちます(例:読み取り専用 API と読み取り/書き込み可能な API)。

メモ

テクニカルアカウントは、最大 10 個まで作成できます(既に削除されているテクニカルアカウントを含む)。

重要

資格情報を生成して、AEM as a Cloud Service 環境への管理者権限を持つユーザーが後で取得できるようにするには、AEM オーサー上の「AEM ユーザー」または「AEM 管理者」製品プロファイルのメンバーでもある IMS 組織管理者(通常は、Cloud Manager を介して環境をプロビジョニングしたユーザーと同じ)が、まず Developer Console にアクセスして「新しいテクニカルアカウントを作成」ボタンをクリックする必要があります。IMS 組織管理者がこの操作をまだ行っていない場合は、IMS 組織管理者の役割が必要であることを通知するメッセージが表示されます。

AEM 以外のサーバーへの AEM サービス資格情報のインストール

AEM に対して呼び出しをおこなうアプリケーションは、AEM as a Cloud Service 資格情報にアクセスしてそれをシークレットとして扱える必要があります。

JWT トークンの生成とアクセストークンとの交換

アクセストークンを取得するには、アドビの IMS サービスへの呼び出しで資格情報を使用して JWT トークンを作成します。このトークンは 24 時間有効です。

AEM CS サービス資格情報は、専用のクライアントライブラリを使用して、アクセストークンと交換できます。このクライアントライブラリは、アドビが公開している GitHub リポジトリーから入手可能です。このリポジトリーには、より詳細なガイダンスと最新の情報が含まれています。

/*jshint node:true */
"use strict";

const fs = require('fs');
const exchange = require("@adobe/aemcs-api-client-lib");

const jsonfile = "aemcs-service-credentials.json";

var config = JSON.parse(fs.readFileSync(jsonfile, 'utf8'));
exchange(config).then(accessToken => {
    // output the access token in json form including when it will expire.
    console.log(JSON.stringify(accessToken,null,2));
}).catch(e => {
    console.log("Failed to exchange for access token ",e);
});

同じ交換は、正しい形式の署名済み JWT トークンの生成と IMS トークン交換 API の呼び出しが可能な任意の言語で実行できます。

アクセストークンには有効期限が定義されます(通常は 24 時間です)。Git リポジトリーには、アクセストークンを管理して期限切れの前に更新するサンプルコードが含まれています。

メモ

複数の資格情報がある場合は、後で呼び出される AEM への API 呼び出しに適した JSON ファイルを必ず参照してください。

AEM API の呼び出し

ヘッダーにアクセストークンを含めて、AEM as a Cloud Service 環境に対して適切なサーバー間 API 呼び出しを行います。そのため、「Authorization」ヘッダーには "Bearer <access_token>" の値を使用します。例えば、curl を使用して次のように呼び出します。

curl -H "Authorization: Bearer <your_ims_access_token>" https://author-p123123-e23423423.adobeaemcloud.com/content/dam.json

AEM のテクニカルアカウントユーザーに対する適切な権限の設定

まず、新しい製品プロファイルを Adobe Admin Console で作成する必要があります。 これは、次の手順に従って実行できます。

  1. Adobe Admin Console(https://adminconsole.adobe.com/)に移動します

  2. 左側の​製品とサービス​列の下にある​管理​リンクをクリックします。

  3. AEM as a Cloud Service を選択します

  4. 新しいプロファイル」ボタンを押します

    新しいプロファイル

  5. プロファイルに名前を付け、「保存」を押します

    プロファイルの保存

  6. 作成したばかりのプロファイルをプロファイルリストから選択します

  7. ユーザーを追加」ボタンを押します

    ユーザーを追加

  8. 作成したばかりのテクニカルアカウント(この場合は 84b2c3a2-d60a-40dc-84cb-e16b786c1673@techacct.adobe.com)を追加し、「保存」を押します

    テクニカルアカウントの追加

  9. 変更が反映されるまで 10 分間待ち、新しい資格情報から生成されたアクセストークンを使用して AEM への API 呼び出しを行います。cURL コマンドの場合、次の例のようになります。

    curl -H "Authorization: Bearer <access_token>" https://author-pXXXXX-eXXXXX.adobeaemcloud.net/content/dam.json

API 呼び出しを行うと、製品プロファイルが AEM as a Cloud Service のオーサーインスタンスにユーザーグループとして表示され、適切なテクニカルアカウントがそのグループのメンバーとして表示されます。

これを確認するには、以下の手順を実行します。

  1. オーサーインスタンスにログインします

  2. ツールセキュリティ​に移動し、グループ​カードをクリックします

  3. グループのリストで作成したプロファイルの名前を見つけて、クリックします。

    グループプロファイル

  4. 次のウィンドウで、「メンバー」タブに切り替えて、テクニカルアカウントが正しく一覧表示されているかどうかを確認します。

    「メンバー」タブ

または、オーサーインスタンスで次の手順を実行して、テクニカルアカウントがユーザーリストに表示されることを確認することもできます。

  1. ツールセキュリティユーザー​に移動します

  2. お使いのテクニカルアカウントがユーザーリストにあることを確認し、クリックします

  3. グループ」タブをクリックして、ユーザーが製品プロファイルに対応するグループに属していることを確認します。 また、このユーザーは、投稿者を含む一部の他のグループのメンバーでもあります。

    グループのメンバーシップ

メモ

2023 年半ば以前の、複数の資格情報を作成できる前は、顧客は Adobe Admin console で製品プロファイルを作成するように指示されなかったので、テクニカルアカウントは AEM as a Cloud Service インスタンスの「投稿者」以外のグループに関連付けられていませんでした。 一貫性を保つため、このテクニカルアカウントの場合は、前述のように Adobe Admin Console で新しい製品プロファイルを作成し、既存のテクニカルアカウントをそのグループに追加することをお勧めします。

適切なグループ権限の設定

最後に、必要な適切な権限でグループを設定して、API を適切に呼び出したり、ロックダウンを行ったりします。これを設定するには、次の操作を行います。

  1. 適切なオーサーインスタンスにログインし、設定セキュリティ権限​に移動します

  2. 左側のパネルで製品プロファイルに対応するグループの名前(この場合は読み取り専用 API)を検索し、クリックします。

    グループの検索

  3. 次のウィンドウで「編集」ボタンをクリックします。

    権限を編集

  4. 権限を適切に変更し、「保存」をクリックします

    権限の編集の確認

情報

Adobe Identity Management System(IMS)と AEM ユーザーおよびグループについて詳しくは、ドキュメントを参照してください。

開発者フロー

開発者は、AEM as a Cloud Service 開発環境に対してリクエストを行う AEM 以外のアプリケーションの開発インスタンス(ラップトップ上で動作するか他でホストされている)を使用してテストを行うことになります。ただし、開発者は必ずしも IMS 管理者の役割の権限を持ってはいないので、通常のサーバー間フローで説明されている JWT ベアラーを開発者が生成できるとは想定できません。したがって、アクセスできる AEM as a Cloud Service 環境へのリクエストで使用できるアクセストークンを開発者が直接生成するメカニズムが用意されています。

AEM as a Cloud Service 開発者コンソールの使用に必要な権限については、開発者ガイドラインドキュメントを参照してください。

メモ

ローカル開発アクセストークンは最大 24 時間有効で、その後は同じ方法で再生成する必要があります。

開発者は、このトークンを使用して AEM 以外のテストアプリケーションから AEM as a Cloud Service 環境に呼び出しを行うことができます。通常、開発者は自分のノート PC で動作する AEM 以外のアプリケーションでこのトークンを使用します。また、AEM as a Cloud Service は通常、非実稼働環境です。

開発者フローは次のステップで構成されます。

  • 開発者コンソールからアクセストークンを生成する
  • そのアクセストークンを指定して AEM アプリケーションを呼び出す

また、開発者は、ローカルマシン上で動作している AEM プロジェクトに対して API 呼び出しを行うこともできます。この場合、アクセストークンは不要です。

アクセストークンの生成

  1. 統合​の下の​ローカルトークン​に移動します
  2. アクセストークンを生成するには、開発者コンソールで「ローカル開発トークンを取得」ボタンをクリックします。

アクセストークンを使用した AEM アプリケーションの呼び出し

ヘッダーにアクセストークンを含めて、AEM 以外のアプリケーションから AEM as a Cloud Service 環境に対して適切なサーバー間 API 呼び出しを行います。そのため、「Authorization」ヘッダーには "Bearer <access_token>" の値を使用します。

資格情報の更新

デフォルトでは、AEM as a Cloud Service 資格情報は 1 年後に期限切れになります。サービスの継続性を確保するために、開発者は資格情報を更新して、利用期間をさらに 1 年間延長することができます。

これを実現するには、次の操作を実行します。

  • 以下に示すように、開発者コンソールの​統合テクニカルアカウント​の下の「証明書を追加」ボタンを使用します

    資格情報の更新

  • ボタンを押すと、新しい証明書を含む一連の資格情報が生成されます。 古い資格情報を削除せずに、AEM 以外のサーバーに新しい資格情報をインストールし、接続が期待どおりに動作することを確認します。

  • アクセストークンを生成する際に、古い資格情報ではなく新しい資格情報が使用されていることを確認します

  • 必要に応じて、以前の証明書を失効(および削除)させて、AEM as a Cloud Service での認証に使用できないようにします。

資格情報の失効

秘密鍵が侵害された場合は、新しい証明書と新しい秘密鍵を使用して、資格情報を作成する必要があります。 アプリケーションが新しい資格情報を使用してアクセストークンを生成した後、古い証明書を失効させて削除できます。

これは、次の手順で行います。

  1. まず、新しいキーを追加します。 これにより、新しい秘密鍵と新しい証明書を使用して、資格情報が生成されます。 新しい秘密鍵は、UI で​現在​とマークされ、今後このテクニカルアカウントでのすべての新しい資格情報に使用されます。 古い秘密鍵に関連付けられている資格情報は、取り消されるまで有効です。これを行うには、現在のテクニカル アカウントの下にある 3 つのドット()を押して、「新しい秘密鍵を追加」を押します。

    新しい秘密鍵の追加

  2. 次のプロンプトで「追加」を押します。

    新しい秘密鍵の追加の確認

    新しい資格情報を含む新しい参照タブが開き、UI が更新されて秘密鍵が両方とも表示されます。新しい秘密鍵は​現在​としてマークされます。

    UI の秘密鍵

  3. 非 AEM サーバーに新しい資格情報をインストールし、接続が期待どおりに動作することを確認します。これを行う方法について詳しくは、サーバーからサーバーへの流れの節を参照してください。

  4. 古い証明書を失効させます。 これを行うには、証明書の右側にある 3 つのドット()を選択し、失効​を押します。

    証明書の失効

    次に、失効​ボタンを押して、次のプロンプトで失効を確認します。

    証明書の確認の失効

  5. 最後に、問題が発生した証明書を削除します。

このページ