Edge Management API での SAML の使用

Edge for Private Cloud v4.19.01

Basic 認証は、Edge Management API を呼び出す際の認証方法の一つです。たとえば、次の cURL リクエストを Edge Management API に送信すると、組織に関する情報にアクセスできます。

curl -u userName:pWord https://ms_IP_DNS:8080/v1/organizations/orgName

この例では、cURL -u オプションを使用して Basic 認証認証情報を渡しています。別の方法として、OAuth2 トークンを Bearer ヘッダーで渡して、Edge Management API 呼び出しを行うこともできます。例:

curl -H "Authorization: Bearer access_token" https://ms_IP_DNS:8080/v1/organizations/orgName

SAML を有効にした後、必要に応じて Basic 認証を無効にできます。Basic 認証を無効にすると、Basic 認証をサポートする Edge Management API 呼び出しに依存するすべてのスクリプト(Maven スクリプト、シェル スクリプト、apigeetool など)が機能しなくなります。Basic 認証を使用する API 呼び出しとスクリプトを更新して、署名なしヘッダーで OAuth2 アクセス トークンを渡す必要があります。

get_token を使用したトークンの取得と更新

get_token ユーティリティは、Basic 認証の認証情報とパスコードを、OAuth2 アクセス トークンおよび更新トークンと交換します。get_token ユーティリティはユーザーの認証情報を受け入れ、有効なアクセス トークンを出力します。トークンを更新できる場合は、トークンを更新して出力します。更新トークンが期限切れになると、ユーザー認証情報の入力を求められます。

get_token ユーティリティはトークンをディスクに格納し、必要なときにすぐに使用できます。また、有効なアクセス トークンを stdout に出力します。そこから、Postman を使用するか、curl で使用する環境変数に埋め込みます。

次の手順では、get_token を使用して OAuth2 アクセス トークンを取得し、Edge Management API 呼び出しを行う方法について説明します。

  1. sso-cli バンドルをダウンロードします。
    curl http://edge_sso_IP_DNS:9099/resources/scripts/sso-cli/ssocli-bundle.zip -o "ssocli-bundle.zip"

    ここで、edge_sso_IP_DNS は Edge SSO モジュールをホストするマシンの DNS 名の IP アドレスです。Edge SSO で TLS を構成した場合は、https と正しい TLS ポート番号を使用します。

  2. ssocli-bundle.zip バンドルを解凍します。
    unzip ssocli-bundle.zip
  3. get_token/usr/local/bin にインストールします。
    > ./install 別の場所を指定するには、-b オプションを使用します(> ./install -b path)。
  4. SSO_LOGIN_URL 環境変数に次の形式でログイン URL を設定します。
    export SSO_LOGIN_URL="http://edge_sso_IP_DNS:9099"

    ここで、edge_sso_IP_DNS は、Edge SSO モジュールをホストするマシンの DNS 名の IP アドレスです。Edge SSO で TLS を構成した場合は、https と正しい TLS ポート番号を使用します。
  5. ブラウザで次の URL にアクセスして、ワンタイム パスコードを取得します。
    http://edge_sso_IP_DNS:9099/passcode

    Edge SSO で TLS を構成した場合は、https と正しい TLS ポート番号を使用します。

    : 現在、ID プロバイダによってログインしていない場合は、ログインするように求められます。

    この URL はワンタイム パスコードを返します。この URL を更新して新しいパスコードを取得するか、get_token を指定してパスコードを使用してアクセス トークンを生成するまで有効です。
  6. get_token を呼び出して OAuth2 アクセス トークンを取得します。
    > get_token -u emailAddress

    ここで、emailAddress は Edge ユーザーのメールアドレスです。手順 3 で取得したワンタイム パスコードを入力するように求められます。
    ワンタイム コード(Get one at https://edge_sso_IP.com/passcode )
    SAML が有効になっている場合はパスコードを入力するか、Enter キーを押します。


    パスコードを入力します。get_token ユーティリティは OAuth2 アクセス トークンを取得して画面に出力し、それと更新トークンを ~/.sso-cli に書き込みます。

    get_token コマンドを使用して、コマンドラインでパスコードを入力できます。
    > get_token -u emailAddress -p passcode
  7. アクセス トークンを Edge Management API 呼び出しに Bearer ヘッダーとして渡します。





    access_token

更新トークンの有効期限が切れると、get_token から新しいパスコードの入力を求められます。新しい OAuth アクセス トークンを生成するには、上記のステップ 3 で示した URL にアクセスして、新しいパスコードを生成する必要があります。

Management API を使用したトークンの取得と更新

Apigee Edge Management API での OAuth2 セキュリティの使用には、Edge Management API を使用してトークンを取得および更新する方法が記載されています。また、Edge API 呼び出しを使用して、SAML アサーションからトークンを生成することもできます。

Apigee Edge Management API での OAuth2 セキュリティの使用で説明されている API 呼び出しとの唯一の違いは、呼び出しの URL でゾーン名を参照する必要があることです。また、初期アクセス トークンを生成するには、上記の手順のステップ 3 に示すように、パスコードを含める必要があります。

たとえば、初期アクセス トークンと更新トークンを生成するには、次の 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 /
  https://edge_sso_IP_DNS:9099/oauth/token -s /
  -d 'grant_type=password&response_type=token&passcode=passcode'  

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

後でアクセス トークンを更新するには、更新トークンを含む次の呼び出しを使用します。

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://edge_sso_IP_DNS:9099/oauth/token /
-d 'grant_type=refresh_token&refresh_token=refreshToken'