Basic 認証は、Edge Management API への呼び出しを行う際の認証方法の一つです。たとえば、Edge Management API に次の cURL リクエストを送信して、組織に関する情報にアクセスできます。
curl -u userName:pWord https://ms_IP_DNS:8080/v1/organizations/orgName
この例では、cURL -u オプションを使用して基本認証の認証情報を渡します。また、Bearer ヘッダーで OAuth2 トークンを渡して Edge Management API 呼び出しを行うこともできます。次に例を示します。
curl -H "Authorization: Bearer access_token" https://ms_IP_DNS:8080/v1/organizations/orgName
SAML を有効にした後、必要に応じて基本認証を無効にできます。基本認証を無効にすると、基本認証をサポートする Edge Management API 呼び出しに依存するすべてのスクリプト(Maven スクリプト、シェル スクリプト、apigeetool など)が機能しなくなります。基本認証を使用する API 呼び出しとスクリプトを更新して、Bearer ヘッダーで OAuth2 アクセス トークンを渡す必要があります。
get_token を使用してトークンを取得、更新する
get_token ユーティリティは、Basic 認証の認証情報とパスコードを OAuth2 アクセス トークンと更新トークンに交換します。get_token ユーティリティは、認証情報を受け取り、有効なアクセス トークンを出力します。トークンを更新できる場合は、更新して出力します。更新トークンの有効期限が切れると、ユーザー認証情報の入力を求められます。
get_token ユーティリティは、トークンをディスクに保存し、必要に応じて使用できるようにします。また、有効なアクセス トークンを stdout に出力します。そこから、Postman を使用するか、curl で使用するために環境変数に埋め込むことができます。
次の手順では、get_token を使用して OAuth2 アクセス トークンを取得し、Edge Management API 呼び出しを行う方法について説明します。
- 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 ポート番号を使用します。 ssocli-bundle.zipバンドルを解凍します。unzip ssocli-bundle.zip
- /usr/local/bin に get_token をインストールします。
> ./install -b オプションを使用して、別の場所を指定します。> ./install -b path - 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 ポート番号を使用します。 - ブラウザで次の URL にアクセスして、ワンタイム パスコードを取得します。
http://edge_sso_IP_DNS:9099/passcode
Edge SSO で TLS を構成した場合は、https と正しい TLS ポート番号を使用します。
注: 現在、ID プロバイダでログインしていない場合は、ログインを求められます。
この URL は、ワンタイム パスコードを返します。このパスコードは、URL を更新して新しいパスコードを取得するか、get_token でパスコードを使用してアクセス トークンを生成するまで有効です。 - get_token を呼び出して OAuth2 アクセス トークンを取得します。
> get_token -u emailAddress
ここで、emailAddress は Edge ユーザーのメールアドレスです。ステップ 3 で取得したワンタイム パスコードを入力するよう求められます。
One Time Code ( Get one at https://edge_sso_IP.com/passcode )
Enter the passcode if SAML is enabled or press ENTER:
パスコードを入力します。get_token ユーティリティは、OAuth2 アクセス トークンを取得して画面に出力し、そのトークンと更新トークンを ~/.sso-cli に書き込みます。
コマンドラインでパスコードを入力するには、get_token コマンドを次の形式で使用します。
> get_token -u emailAddress -p passcode - アクセス トークンを Bearer ヘッダーとして Edge Management API 呼び出しに渡します。
> curl -H "Authorization: Bearer access_token" https://ms_IP:8080/v1/organizations/orgName
新しいアクセス トークンを初めて取得した後は、以下に示すように、アクセス トークンを取得して、1 つのコマンドで API 呼び出しに渡すことができます。
> header=`get_token` && curl -H "Authorization: Bearer $header" https://ms_IP:8080/v1/o/orgName
この形式のコマンドでは、アクセス トークンの有効期限が切れると、更新トークンの有効期限が切れるまで自動的に更新されます。
更新トークンの有効期限が切れると、get_token によって新しいパスコードの入力を求められます。新しい OAuth アクセス トークンを生成する前に、上記のステップ 3 に示されている URL に移動して、新しいパスコードを生成する必要があります。
Management API を使用してトークンを取得、更新する
Apigee Edge Management API での OAuth2 セキュリティの使用には、Edge Management API を使用してトークンを取得および更新トークンを更新する方法が記載されています。SAML アサーションから生成されたトークンに対して Edge API 呼び出しを使用することもできます。
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'