トークン生成プロセスの自動化

Edge API で SAML を使用している場合に SAML アサーションから OAuth2 アクセス トークンと更新トークンを取得するプロセスのことを「パスコード」フローと呼びます。パスコード フローでは、ブラウザを使用してワンタイム パスコードを取得し、それを使用して OAuth2 トークンを取得します。

ただし、ご使用の環境が、テストの自動化や継続的インテグレーション / 継続的デプロイ(CI / CD)といった一般的な開発タスクの自動化をサポートしている場合があります。SAML が有効なときにこれらのタスクを自動化するには、OAuth2 トークンを取得および更新する際にパスコードをブラウザからコピーして貼り付けずに済む方法が必要となります。

マシンユーザーについて

Apigee Edge は、SAML が有効化された組織でマシンユーザーをサポートしています。マシンユーザーは人間が直接使用するものではなく、自動化のためだけに使用されます。

マシンユーザーは、パスコードを指定しなくても OAuth2 トークンを取得できます。つまり、Edge API を使用することで、OAuth2 トークンを取得および更新するプロセスを完全に自動化できます。

トークン生成プロセスを自動化する手順

トークン生成プロセスを自動化するには:

手順 説明
1 SAML ID ゾーンにマシンユーザーを作成する
2 Edge 組織のマシンユーザーに必要なロールを割り当てる
3 マシンユーザーの OAuth2 トークンを取得する

動画: マシンユーザーの認証情報を使用して Apigee Edge API へのアクセスを自動化する方法を説明する短い動画をご覧ください。

SAML ID ゾーンのマシンユーザーを管理する

Apigee には、マシンユーザー アカウントを作成および管理するためのマシンユーザー管理コマンドライン インターフェース(CLI)が用意されています。マシンユーザー管理 CLI を使用する手順について、以降のセクションで説明します。

CLI を使用する

マシンユーザー管理 CLI を使用するには、まず usermgmt.tar.gz ファイルをダウンロードして展開します。

CLI の呼び出し形式は次のとおりです。

usermgmt_platform [command] [flags]

次の表は、サポートされているプラットフォームと、各プラットフォームでマシンユーザー管理 CLI を呼び出すためのコマンドをまとめたものです(実行ファイルは usermgmt ディレクトリにあります)。

プラットフォーム 32 ビット 64 ビット
Linux usermgmt_linux_386 usermgmt_linux_amd64
Mac usermgmt_darwin_386 usermgmt_darwin_amd64
Windows usermgmt_windows_386 usermgmt_windows_amd64

次の表に、指定可能なコマンドを示します。

コマンド 詳細
create ID ゾーンにマシンユーザーを作成する
delete ID ゾーン内のマシンユーザーを削除する
help CLI の使用に関するヘルプを表示する
list ID ゾーン内のすべてのマシンユーザーを一覧表示する
reset ID ゾーン内のマシンユーザーのパスワードを再設定する

必要に応じて、-h または -help フラグを渡して、指定したコマンドのヘルプを表示できます。

CLI にログインする

24 時間の期間内で初めて CLI を実行するとき、zoneadmin アカウントの認証情報を入力するよう求められます。

Enter your Apigee credentials
Username: zoneadmin-username
Password: zoneadmin-password
If your user is opted with MFA, enter MFA code. Otherwise press enter to skip.
MFA: mfa-code_or_enter_to_skip

マシンユーザー管理 CLI では、ローカルマシンにアクセス トークンが保存されるため、24 時間ごとに 1 回だけログインする必要があります。

CLI の使用に関するヘルプを表示する

CLI の使用方法を表示するには、usermgmt_platform help コマンドを使用します。サポートされているプラットフォームの一覧については、CLI を使用するをご覧ください。

usermgmt_platform help

次のヘルプ情報が表示されます。

A command-line interface (CLI) to manage machine user accounts to automate
Apigee identity zone management. Use the CLI to create, list, delete,
and reset the password for machine users.

Usage:
  usermgmt [flags]
  usermgmt [command]

Available Commands:
  create  Creates a machine users in an identity zone.
  delete  Deletes a machine users in an identity zone.
  help    Help about any command
  list    Lists the machine users in an identity zone.
  reset   Resets the password for a machine user in an identity zone.

Flags:
  -h, --help               help for usermgmt

Use "usermgmt [command] --help" for more information about a command.

コマンドと -h または -help フラグをコマンドラインに指定すると、その特定のコマンドのヘルプが表示されます。

たとえば、list コマンドのヘルプを表示するには次のようにします。

usermgmt_platform list -h

次のヘルプ情報が表示されます。

Lists the machine users in an identity zone.

Usage:
  usermgmt list [flags]

Flags:
  -h, --help   help for list

ID ゾーンにマシンユーザーを作成する

ID ゾーンにマシンユーザーを作成するには、usermgmt_platform create コマンドを使用します。サポートされているプラットフォームの一覧については、CLI を使用するをご覧ください。

  1. 次のコマンドを入力します。
    usermgmt_platform create

    ID ゾーンが一覧表示されます。

    myzone1
    myzone2
  2. プロンプトに対してゾーンの名前を入力します。
    Enter a zone name: myzone1
  3. マシンユーザーのユーザー名を入力します。
    Create a Machine User
    Username: machineuser1@mycompany.com
  4. マシンユーザーのパスワードを入力します。プロンプトが表示されたら、パスワードを再入力します。
    Password: password
    Re-enter password: password 

    ユーザーが作成されます。

    Created machine user machineuser1@mycompany.com

ID ゾーン内のすべてのマシンユーザーを一覧表示する

ID ゾーン内のすべてのマシンユーザーを一覧表示するには、usermgmt_platform list コマンドを使用します。サポートされているプラットフォームの一覧については、CLI を使用するをご覧ください。

  1. 次のコマンドを入力します。
    usermgmt_platform list
    ID ゾーンが一覧表示されます。
    myzone1
    myzone2
  2. プロンプトに対してゾーンの名前を入力します。
    Enter a zone name: myzone1

    指定した ID ゾーン内のマシンユーザーが一覧表示されます。

    Machine users in the zone:
    machineuser1@mycompany.com
        

ID ゾーン内のマシンユーザーのパスワードを再設定する

ID ゾーン内のマシンユーザーのパスワードを再設定するには、usermgmt_platform reset コマンドを使用します。サポートされているプラットフォームの一覧については、CLI を使用するをご覧ください。

  1. 次のコマンドを入力します。
    usermgmt_platform reset

    ID ゾーンが一覧表示されます。

    myzone1
    myzone2
  2. プロンプトに対してゾーンの名前を入力します。
    Enter a zone name: myzone1
  3. パスワードを再設定するマシンユーザーのユーザー名を入力します。
    Reset User Password
    Enter the username for the machine user
    Username: machineuser1@mycompany.com
  4. マシンユーザーの新しいパスワードを入力します。プロンプトが表示されたら、パスワードを再入力します。
    Enter the new password: password
    Re-enter password: password

    パスワードが再設定されます。

    Reset password for machine user machineuser1@mycompany.com

ID ゾーン内のマシンユーザーを削除する

ID ゾーン内のマシンユーザーを削除するには、usermgmt_platform delete コマンドを使用します。サポートされているプラットフォームの一覧については、CLI を使用するをご覧ください。

  1. 次のコマンドを入力します。
    usermgmt_platform delete
    ID ゾーンが一覧表示されます。
    myzone1
    myzone2
  2. プロンプトに対してゾーンの名前を入力します。
    Enter a zone name: myzone1
  3. 削除するマシンユーザーのユーザー名を入力します。
    Delete User
    Enter the username for the machine user
    Username: machineuser1@mycompany.com 

    マシンユーザーが削除されます。

    Deleted user machineuser1@mycompany.com

Edge 組織のマシンユーザーに必要なロールを割り当てる

UI を使用して、SAML が有効化された Edge 組織にマシンユーザーを追加し、必要なロール(組織管理者など)を割り当てます。詳細については、ユーザーの追加をご覧ください。

マシンユーザーの OAuth2 トークンを取得する

マシンユーザーの OAuth2 トークンを取得するには:

  1. 任意の URL エンコード ツールを使用して、マシンユーザーのユーザー名とパスワードをエンコードします。

    警告: マシンユーザーの認証情報が危険にさらされることを防ぐため、必ず内部の URL エンコード ツールを使用してください。

  2. SAML トークン エンドポイントを呼び出して、初期アクセス トークンと更新トークンを生成します。次に例を示します。
    curl -H "Content-Type: application/x-www-form-urlencoded;charset=utf-8" \
      -H "accept: application/json;charset=utf-8" \
      -H "Authorization: Basic ZWRnZWNsaTplZGdlY2xpc2VjcmV0" -X POST \
      https://zoneName.login.apigee.com/oauth/token -s \
      -d 'grant_type=password&username=machineusername&password=machineuserpassword'

    認可のために、予約されている OAuth2 クライアント認証情報 ZWRnZWNsaTplZGdlY2xpc2VjcmV0Authorization ヘッダーで渡します。この呼び出しにより、アクセス トークンと更新トークンが stdout に出力されます。

  3. アクセス トークンを Bearer ヘッダーとして Edge 管理 API 呼び出しに渡します。
    curl -H "Authorization: Bearer ACCESS_TOKEN" \
      https://api.enterprise.apigee.com/v1/organizations/orgName
  4. アクセス トークンの有効期限が切れたら、更新トークンを SAML トークン エンドポイントに送信してアクセス トークンを更新できます。次に例を示します。
    curl -H "Content-Type:application/x-www-form-urlencoded;charset=utf-8" \
      -H "Accept: application/json;charset=utf-8" \
      -H "Authorization: Basic ZWRnZWNsaTplZGdlY2xpc2VjcmV0" -X POST \
      https://zoneName.login.apigee.com/oauth/token \
      -d 'grant_type=refresh_token&refresh_token=REFRESH_TOKEN'