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 を使用するをご覧ください。
- 次のコマンドを入力します。
usermgmt_platform create
ID ゾーンが一覧表示されます。
myzone1 myzone2
- プロンプトに対してゾーンの名前を入力します。
Enter a zone name: myzone1
- マシンユーザーのユーザー名を入力します。
Create a Machine User Username: machineuser1@mycompany.com
- マシンユーザーのパスワードを入力します。プロンプトが表示されたら、パスワードを再入力します。
Password: password Re-enter password: password
ユーザーが作成されます。
Created machine user machineuser1@mycompany.com
ID ゾーン内のすべてのマシンユーザーを一覧表示する
ID ゾーン内のすべてのマシンユーザーを一覧表示するには、usermgmt_platform list コマンドを使用します。サポートされているプラットフォームの一覧については、CLI を使用するをご覧ください。
- 次のコマンドを入力します。
ID ゾーンが一覧表示されます。usermgmt_platform list
myzone1 myzone2
- プロンプトに対してゾーンの名前を入力します。
Enter a zone name: myzone1
指定した ID ゾーン内のマシンユーザーが一覧表示されます。
Machine users in the zone: machineuser1@mycompany.com
ID ゾーン内のマシンユーザーのパスワードを再設定する
ID ゾーン内のマシンユーザーのパスワードを再設定するには、usermgmt_platform reset コマンドを使用します。サポートされているプラットフォームの一覧については、CLI を使用するをご覧ください。
- 次のコマンドを入力します。
usermgmt_platform reset
ID ゾーンが一覧表示されます。
myzone1 myzone2
- プロンプトに対してゾーンの名前を入力します。
Enter a zone name: myzone1
- パスワードを再設定するマシンユーザーのユーザー名を入力します。
Reset User Password Enter the username for the machine user Username: machineuser1@mycompany.com
- マシンユーザーの新しいパスワードを入力します。プロンプトが表示されたら、パスワードを再入力します。
Enter the new password: password Re-enter password: password
パスワードが再設定されます。
Reset password for machine user machineuser1@mycompany.com
ID ゾーン内のマシンユーザーを削除する
ID ゾーン内のマシンユーザーを削除するには、usermgmt_platform delete コマンドを使用します。サポートされているプラットフォームの一覧については、CLI を使用するをご覧ください。
- 次のコマンドを入力します。
ID ゾーンが一覧表示されます。usermgmt_platform delete
myzone1 myzone2
- プロンプトに対してゾーンの名前を入力します。
Enter a zone name: myzone1
- 削除するマシンユーザーのユーザー名を入力します。
Delete User Enter the username for the machine user Username: machineuser1@mycompany.com
マシンユーザーが削除されます。
Deleted user machineuser1@mycompany.com
Edge 組織のマシンユーザーに必要なロールを割り当てる
UI を使用して、SAML が有効化された Edge 組織にマシンユーザーを追加し、必要なロール(組織管理者など)を割り当てます。詳細については、ユーザーの追加をご覧ください。
マシンユーザーの OAuth2 トークンを取得する
マシンユーザーの OAuth2 トークンを取得するには:
- 任意の URL エンコード ツールを使用して、マシンユーザーのユーザー名とパスワードをエンコードします。
警告: マシンユーザーの認証情報が危険にさらされることを防ぐため、必ず
内部 の URL エンコード ツールを使用してください。 - 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 クライアント認証情報
ZWRnZWNsaTplZGdlY2xpc2VjcmV0
をAuthorization
ヘッダーで渡します。この呼び出しにより、アクセス トークンと更新トークンがstdout
に出力されます。 - アクセス トークンを Bearer ヘッダーとして Edge 管理 API 呼び出しに渡します。
curl -H "Authorization: Bearer ACCESS_TOKEN" \ https://api.enterprise.apigee.com/v1/organizations/orgName
- アクセス トークンの有効期限が切れたら、更新トークンを 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'