AEM開発者ブログ by YAMATO

アドビ社のデリバリーパートナー大和株式会社のAEM開発者ブログです。

2024年版 OAuth認証を使用してCloud Manager CLIをセットアップする方法

AEM Developerの皆様、こんにちは!
大和株式会社の熊井です。

今回はAdobe I/Oの認証から従来のJWTが非推奨となりOAuthが推奨となったことを踏まえて、改めてAdobe I/OのセットアップからCloud Manager CLIを使用するまでの手順をまとめました。
※JWTに関してもっと知りたい方はこちら
※OAuthに関してもっと知りたい方はこちら

前提

  • Java 11、Node.js、npmをインストール済み
  • Admin Consoleで付与されるシステム管理者(Administrators)権限を持っている

大きな流れ

【1】Adobe I/Oプロジェクトの作成
【2】Cloud Manager APIのセットアップ
【3】Adobe I/O CLI のセットアップ
【4】Cloud Manager plugin のセットアップ

【1】Adobe I/Oプロジェクトの作成

Adobe I/O コンソールにアクセスし、Create new projectをクリックします

以上でAdobe I/Oプロジェクトの作成が完了しました。

【2】Cloud Manager APIのセットアップ

作成したプロジェクト上でAdd APIをクリックします
Experience Cloudタブの中にあるCloud Managerを選択し、Next
OAuth Server-to-Serverが選択されていることを確認し、Next
APIを介して行いたい動作に合わせて権限を付与し、保存します(今回は全ての権限をつけています)

以上でCloud Manager APIのセットアップが完了しました。

【3】Adobe I/O CLI のセットアップ

Node.jsがインストールされていることを確認し、npmを使用してAdobe I/O CLI のインストールを行います

$ node --version
v18.19.1

$ npm install -g @adobe/aio-cli 

Adobe I/O CLI がインストールされたことを確認します

$ aio
Adobe I/O Extensible CLI

VERSION
  @adobe/aio-cli/10.0.0 win32-x64 node-v18.19.1

USAGE
  $ aio [COMMAND]
....

以上でAdobe I/O CLI のセットアップが完了しました。

【4】Cloud Manager plugin のセットアップ

Cloud Manager pluginをインストールまたはアップデートします
・インストールの場合

$ aio plugins:install @adobe/aio-cli-plugin-cloudmanager

・アップデート(インストール済み)の場合

$ aio plugins:update

次にAdobe I/Oへの認証を行います。ブラウザベースの認証かconfigファイルベースの認証のどちらかを選択可能です。
ブラウザベースの場合はCLI を通して行われる API 呼び出しは自分自身として行われるため、自身の権限が使用されます。
一方、configファイルベースの認証ではサービスアカウントを使用した呼び出しになるため、自身の権限範囲とは異なる場合がある点に注意が必要です。

ブラウザベースの認証方法

$ aio auth:login

デフォルトのブラウザが立ち上がるので、自身のアカウント情報で認証を行います。

configファイルベースの認証方法

configファイルを作成します。今回はconfig.jsonという名前で作成します。

// config.json
{
  "client_id": "value from your CLI integration (String)",
  "client_secrets": ["client secret value from your CLI integration (String)"],
  "technical_account_id": "value from your CLI integration (String)",
  "technical_account_email": "value from your CLI integration (String)",
  "ims_org_id": "value from your CLI integration (String)",
  "scopes": [
    'openid', 
    'AdobeID', 
    'read_organizations', 
    'additional_info.projectedProductContext', 
    'read_pc.dma_aem_ams'
  ],
  "oauth_enabled": true
}

config.jsonに記載する情報はAdobe I/Oコンソールから取得します。 下記コマンドでconfig.jsonの場所を登録します

$ aio config:set ims.contexts.aio-cli-plugin-cloudmanager PATH_TO_CONFIG_JSON_FILE --file --json

接続確認

下記コマンドで設定が正しく登録されていることを確認します

$ aio cloudmanager:list-programs
 Program Id Name                           Enabled
 ────────── ────────────────────────────── ───────
 xxxxx      Yamato Partner Sandbox Program true

以降、コマンドを打つ際に使用されるプログラムIDを登録しておくと便利です

$ aio config:set cloudmanager_programid PROGRAMID

最後に

以前執筆した「AEM as a Cloud Serviceのログをtail -fでリアルタイムに確認する」ではJWTでの認証が前提となっていました。
大枠の手順に変わりはありませんが、差分をまとめると以下の通りです。
・Cloud Manager APIのセットアップでkeypair等の設定が不要になった。
・Cloud Manager plugin のセットアップでconfigファイルベースの認証方法をとる場合、private keyの登録が不要になった。

OAuth認証を使用したセットアップ方法については本記事を参考に取り組んでいただければ幸いです。