外部 IDP のタスクを自動化する

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

ただし、開発環境によっては、一般的な開発タスクの自動化をサポートしている場合もあります。 (テスト自動化や CI/CD など)です。外部 IDP が有効な場合にこれらのタスクを自動化するには、 パスコードをコピーして貼り付けることなく、OAuth2 トークンを取得して更新する方法が必要です できます。

Edge では、組織内でマシンユーザーを使用してトークンの自動生成をサポート IDP が有効になっている必要がありますマシンユーザーは パスコードを指定しなくても OAuth2 トークンを取得できます。つまり Edge Management API を使用して OAuth2 トークンを取得および更新するプロセス。

IDP が有効な組織でマシンユーザーを作成するには、次の 2 つの方法があります。

以降のセクションで、それぞれの方法について説明します。

外部 IDP が有効になっていない組織にマシンユーザーを作成することはできません。

apigee-ssoadminapi.sh を使用してマシンユーザーを作成する

apigee-ssoadminapi.sh を使用する ユーティリティを使用して IDP が有効な組織内でマシンユーザーを作成します。詳細については、 apigee-ssoadminapi.sh をご覧ください。すべての組織で使用する単一のマシンユーザーを 組織ごとに個別のマシンユーザーを作成することもできます。

マシンユーザーは、IDP ではなく Edge データストアに作成され、保存されます。したがって、 Edge UI と Edge 管理を使用してマシンユーザーを維持する責任はない API

マシンユーザーを作成するときは、メールアドレスとパスワードを指定する必要があります。変更後 マシンユーザーを作成したら、1 つ以上の組織に割り当てます。

apigee-ssoadminapi.sh でマシンユーザーを作成するには:

  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

    QUESTION/TBD: Does apigee-ssoadminapi.sh also take "ldap" as an argument?

    ここで

    • SSO_ADMIN_NAME は、 構成ファイル内の SSO_ADMIN_NAME プロパティを Apigee SSO モジュール。デフォルトは ssoadmin です。
    • SSO_ADMIN_SECRET は、 構成ファイルの SSO_ADMIN_SECRET プロパティを設定します。

      この例では、--port--ssl を使用します。これは、apigee-sso モジュールはデフォルトの --port の場合は 9099、--ssl の場合は http になります。お使いの インストールではこれらのデフォルトが使用されないため、必要に応じて指定してください。

  2. Edge UI にログインしてマシンユーザーのメールアドレスを組織に追加し、 必要なロールを割り当てます。詳しくは、 グローバル ユーザーの追加 できます。

Edge でマシンユーザーを作成する 管理 API

マシンユーザーを作成するには、Edge Management API を、 apigee-ssoadminapi.sh ユーティリティ。

Management API を使用してマシンユーザーを作成するには:

  1. 次の 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 構成します。

    このコマンドを実行すると、次の呼び出しに必要なトークンが表示されます。

  2. 次の 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"

    マシンユーザーのパスワードは、後の手順で必要になります。

  3. Edge UI にログインします。
  4. マシンユーザーのメールアドレスを組織に追加し、マシンユーザーを 付与します。詳細については、 グローバル ユーザーをご覧ください。

マシンユーザー トークンの取得と更新

Edge API を使用して、マシンユーザーの認証情報を渡して OAuth2 トークンを取得し、更新します。 認証情報を使わずに済みます。

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

  1. 次の 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'

    後で使用できるように、トークンを保存します。

  2. 次のように、アクセス トークンを Bearer ヘッダーとして Edge Management API 呼び出しに渡します。 次の例をご覧ください。
    curl -H "Authorization: Bearer access_token" \
      http://MS_IP_DNS:8080/v1/organizations/org_name

    ここで、org_name はマシンユーザーを含む組織の名前です。

  3. 後でアクセス トークンを更新するには、更新トークンを含む次の呼び出しを使用します。
    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'