サーバーサイド API のアクセストークンの生成(レガシー)
- 適用対象:
- Experience Manager as a Cloud Service
- トピック:
- 開発
作成対象:
- 管理者
- 開発者
一部のアーキテクチャでは、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 資格情報を生成できます。その資格情報は後で、AEM as a Cloud Service 環境管理者の役割を持つユーザーに取得され、サーバーにインストールされることになるので、秘密鍵として慎重に取り扱う必要があります。この JSON 形式のファイルには、AEM as a Cloud Service API との統合に必要なすべてのデータが含まれています。このデータを使用して署名済み JWT トークンが作成され、IMS との間で IMS アクセストークンと交換されます。その後、このアクセストークンをベアラー認証トークンとして使用して、AEM as a Cloud Service にリクエストを行うことができます。資格情報はデフォルトで 1 年後に期限切れになりますが、必要に応じて更新できます。資格情報の更新を参照してください。
サーバー間フローは次のステップで構成されます。
- Developer Console から 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 にアクセスできるユーザーには、特定の環境の Developer Console の統合タブと 2 つのボタンが表示されます。AEM as a Cloud Service 環境管理者の役割を持つユーザーは、「サービス資格情報を生成」ボタンをクリックして、サービス資格情報の JSON を生成して表示できます。JSON には、選択したポッドにかかわらず、環境のオーサー層とパブリッシュ層用のクライアント ID、クライアント秘密鍵、秘密鍵、証明書、設定を含む、AEM 以外のサーバーに必要なすべての情報が含まれています。
出力は次のようになります。
{
"ok": true,
"integration": {
"imsEndpoint": "ims-na1.adobelogin.com",
"metascopes": "ent_aem_cloud_sdk,ent_cloudmgr_sdk",
"technicalAccount": {
"clientId": "cm-p123-e1234",
"clientSecret": "4AREDACTED17"
},
"email": "abcd@techacct.adobe.com",
"id": "ABCDAE10A495E8C@techacct.adobe.com",
"org": "1234@AdobeOrg",
"privateKey": "-----BEGIN RSA PRIVATE KEY-----\r\REDACTED\r\n==\r\n-----END RSA PRIVATE KEY-----\r\n",
"publicKey": "-----BEGIN CERTIFICATE-----\r\nREDACTED\r\n-----END CERTIFICATE-----\r\n"
},
"statusCode": 200
}
生成後、同じ場所の「サービス資格情報を取得」ボタンをクリックすることで、後で、資格情報を取得することができます。
AEM サーバー以外での AEM サービス資格情報のインストール
AEM に対して呼び出しを行う AEM 以外のアプリケーションは、AEM as a Cloud Service 資格情報にアクセスしてそれをシークレットとして扱える必要があります。
JWT トークンを生成してアクセストークンと交換する
資格情報を使用して、Adobe 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 の呼び出し
ヘッダーにアクセストークンを含めて、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 のテクニカルアカウントユーザーに対する適切な権限の設定
テクニカルアカウントユーザーが AEM に作成されたら(これは、対応するアクセストークンを含んだ初回リクエストの後で行われます)、AEM 内の 適切な権限をテクニカルアカウントユーザーに付与する必要があります。
デフォルトでは、テクニカルアカウントユーザーは AEM オーサーサービスで投稿者ユーザーグループに追加されます。このグループは AEM への読み取りアクセスが可能です。
AEM のこのテクニカルアカウントユーザーには、通常の方法を使用して、さらに権限を付与することができます。
開発者フロー
開発者は、AEM as a Cloud Service 開発環境に対してリクエストを行う AEM 以外のアプリケーションの開発インスタンス(ラップトップ上で動作するか他でホストされている)を使用してテストを行う必要があります。ただし、開発者は必ずしも IMS 管理者役割の権限を持ってはいないので、アドビは通常のサーバー間フローで説明されている JWT ベアラーを開発者が生成できるとは想定できません。したがって、アドビは、開発者がアクセスできる AEM as a Cloud Service 環境へのリクエストで使用できるアクセストークンを直接生成するメカニズムを提供します。
AEM as a Cloud Service 開発者コンソールの使用に必要な権限については、開発者ガイドラインドキュメントを参照してください。
開発者は、このトークンを使用して AEM 以外のテストアプリケーションから AEM as a Cloud Service 環境に呼び出しを行うことができます。一般的に、開発者は自分のノート PC で動作する AEM 以外のアプリケーションでこのトークンを使用します。また、AEM as a Cloud Service は通常、非実稼働環境です。
開発者フローは次のステップで構成されます。
- 開発者コンソールからアクセストークンを生成する
- そのアクセストークンを指定して AEM アプリケーションを呼び出す
また、開発者は、ローカルマシン上で動作している AEM プロジェクトに対して API 呼び出しを行うこともできます。この場合、アクセストークンは不要です。
アクセストークンの生成
アクセストークンを生成するには、Developer Console で、「ローカル開発トークンを取得」をクリックします。
アクセストークンを指定した AEM アプリケーションの呼び出し
ヘッダーにアクセストークンを含めて、AEM 以外のアプリケーションから AEM as a Cloud Service 環境に対して適切なサーバー間 API 呼び出しを行います。そのため、「Authorization」ヘッダーには "Bearer <access_token>"
の値を使用します。
資格情報の更新
デフォルトでは、AEM as a Cloud Service の資格情報は 1 年後に期限切れになります。サービスの継続性を確保するために、開発者は資格情報を更新して、利用期間をさらに 1 年間延長することができます。以下に示すように、Developer Console の「統合」タブから サービス資格情報を更新 を使用します。
ボタンをクリックすると、新しい資格情報セットが生成されます。新しい資格情報でシークレットストレージを更新し、新しい資格情報が正常に機能していることを検証できます。
サービス資格情報の失効
資格情報を取り消す必要がある場合は、次の手順に従って、カスタマーサポートにリクエストを送信する必要があります。
-
ユーザーインターフェイスで Adobe Admin Console のテクニカルアカウントユーザーを無効にします。
- Cloud Manager で、環境の横にある … ボタンをクリックします。このアクションにより、製品プロファイルページが開きます
- AEM ユーザー プロファイルをクリックして、ユーザーのリストを表示します。
- 「API 資格情報」タブをクリックし、該当するテクニカルアカウントユーザーを探して削除します。
-
カスタマーサポートに連絡し、その特定の環境のサービス資格情報を削除するようにリクエストします。
-
最後に、このドキュメントの説明に従って、資格情報を再生成します。また、作成した新しいテクニカルアカウントユーザーに適切な権限があることも確認してください。