Edge for Private Cloud v4.18.05
SAML を Edge API で使用している場合、OAuth2 アクセスを取得して SAML アサーションからのトークンをリフレッシュするために使用するプロセスを、パスコード フローと呼びます。パスコード フローでは、ブラウザを使用してワンタイム パスコードを取得し、それを使用して OAuth2 トークンを取得します。
ただし、使用している環境が、テストの自動化や継続的インテグレーション / 継続的デプロイ(CI / CD)といった一般的な開発タスクの自動化をサポートしている場合があります。SAML が有効なときにこれらのタスクを自動化するには、パスコードをブラウザからコピーして貼り付けることなく OAuth2 トークンを取得してリフレッシュできる方法が必要になります。
Edge では、マシンユーザーを使用したトークンの自動生成がサポートされます。マシンユーザーは、パスコードを指定しなくても、OAuth2 トークンを取得できます。つまり、Edge 管理 API を使用することで、OAuth2 トークンを取得およびリフレッシュするプロセスを完全に自動化できます。
マシンユーザーを作成する
apigee-ssoadminapi.sh
ユーティリティを使用して、マシンユーザーを作成します。詳細については、apigee-ssoadminapi.sh の使用をご覧ください。すべての組織で使用するマシンユーザーをひとつだけ作成することも、組織ごとに別々のマシンユーザーを作成することもできます。
マシンユーザーは、使用している SAML ID プロバイダではなく、Edge データストアに作成されて格納されます。したがって、Edge UI と Edge 管理 API を使用してマシンユーザーを管理する必要はありません。
マシンユーザーを作成する場合は、メールアドレスとパスワードを指定する必要があります。マシンユーザーを作成したら、それを 1 つ以上の組織に割り当てます。
マシンユーザーを作成するには、次のようにします。
- マシンユーザーを作成するには、次の
apigee-ssoadminapi.sh
コマンドを使用します。apigee-ssoadminapi.sh saml machineuser add --admin SSO_ADMIN_NAME \ --secret SSO_ADMIN_SECRET --host edge_sso_IP_or_DNS \ -u machine_user_email -p machine_user_password
ここで
- SSO_ADMIN_NAME は、Edge SSO モジュールを構成するために使用する構成ファイル内の
SSO_ADMIN_NAME
で定義される管理者ユーザー名です。デフォルトはssoadmin
です。 - SSO_ADMIN_SECRET は、構成ファイルの
SSO_ADMIN_SECRET
プロパティで指定される管理者パスワードです。
上記の例では、
--port
と--ssl
の値を省略しています。これは、apigee-sso
モジュールはデフォルト値として--port
には 9099、--ssl
には http を使用するためです。インストールでこれらのデフォルトを使用しない場合は、適切なものを指定します。 - SSO_ADMIN_NAME は、Edge SSO モジュールを構成するために使用する構成ファイル内の
- Edge UI にログインして、マシンユーザーのメールを組織に追加し、マシンユーザーに必要な役割を割り当てます。詳細については、グローバル ユーザーを追加するをご覧ください。
マシンユーザー トークンを取得して更新する
Edge API を使用して、マシンユーザーの資格情報をパスコードの代わりに渡すことで、OAuth2 トークンを取得して更新します。
マシンユーザーの OAuth2 トークンを取得するには、次のようにします。
- 初期アクセス トークンとリフレッシュ トークンを生成するには、次の API 呼び出しを使用します。
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 \ http://edge_sso_IP_DNS:9099/oauth/token -s \ -d 'grant_type=password&username=m_user_email&password=m_user_password'
認可のため、用意していた OAuth2 クライアント資格情報を
Authorization
ヘッダーに含めて渡します。この呼び出しによってアクセス トークンとリフレッシュ トークンが画面に出力されます。後で使用するためにトークンを保存します。 - アクセス トークンを Bearer ヘッダーとして Edge 管理 API 呼び出しに渡します。
curl -H "Authorization: Bearer access_token" \ http://ms_IP_DNS:8080/v1/organizations/orgName
ここで、orgName はマシンユーザーを含む組織の名前です。
- 後でアクセス トークンをリフレッシュするには、リフレッシュ トークンを含めた以下の呼び出しを使用します。
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 \ http://edge_sso_IP_DNS:9099/oauth/token \ -d 'grant_type=refresh_token&refresh_token=refreshToken'
認可のため、用意していた OAuth2 クライアント資格情報を
Authorization
ヘッダーに含めて渡します。
Edge 管理 API を使用してマシンユーザーを作成する
apigee-ssoadminapi.sh
ユーティリティを使用する代わりに、Edge 管理 API を使用してマシンユーザーを作成できます。
マシンユーザーを作成するには、次のようにします。
- 次の
curl
コマンドを使用して、ssoadmin
ユーザーのトークン、apigee-sso
の管理者アカウントのユーザー名を取得します。curl "http://edge_sso_IP_DNS:9099/oauth/token" -i -X POST \ -H 'Accept: application/json' / -H 'Content-Type: application/x-www-form-urlencoded' \ -d "response_type=token" -d "grant_type=client_credentials" \ --data-urlencode "client_secret=SSO_ADMIN_SECRET" \ --data-urlencode "client_id=ssoadmin"
ここで SSO_ADMIN_SECRET は、構成ファイルの
SSO_ADMIN_SECRET
プロパティで指定されたapigee-sso
をインストールしたときに設定した管理者パスワードです。このコマンドは、次回の呼び出しに必要なトークンを表示します。
- 前の手順で受け取ったトークンを渡して、マシンユーザーを作成するには、次の
curl
コマンドを使用します。curl "http://edge_sso_IP_DNS:9099/Users" -i -X POST \ -H "Accept: application/json" -H "Content-Type: application/json" \ -d '{"userName" : "machine_user_email", "name" : {"formatted":"DevOps", "familyName" : "last_name", "givenName" : "first_name"}, "emails" : [ {"value" : "machine_user_email", "primary" : true } ], "active" : true, "verified" : true, "password" : "machine_user_password" }' \ -H "Authorization: Bearer token"
後の手順でマシンユーザーのパスワードが必要になります。
- Edge UI にログインして、マシンユーザーのメールを組織に追加し、マシンユーザーに必要な役割を割り当てます。詳細については、グローバル ユーザーを追加するをご覧ください。