Basic 認証は、Edge Management API を呼び出す際の認証方法の一つです。たとえば、次の curl
リクエストを Edge Management API に送信すると、組織に関する情報にアクセスできます。
curl -u USER_NAME:PASSWORD https://MS_IP_DNS:8080/v1/organizations/ORG_NAME
この例では、curl
-u
オプションを使用して Basic 認証情報を渡しています。また、次の例のように、Bearer
ヘッダーで OAuth2 トークンを渡して Edge Management API 呼び出しを行うこともできます。
curl -H "Authorization: Bearer ACCESS_TOKEN" https://MS_IP_DNS:8080/v1/organizations/ORG_NAME
認証用に外部 IDP を有効にした後、必要に応じて Basic 認証を無効にできます。Basic 認証を無効にすると、Basic 認証をサポートする Edge Management API 呼び出しに依存するすべてのスクリプト(Maven、シェル、apigeetool
など)が機能しなくなります。Basic 認証を使用する API 呼び出しとスクリプトを更新して、Bearer
ヘッダーで OAuth2 アクセス トークンを渡す必要があります。
get_token でトークンを取得および更新する
get_token
ユーティリティは、基本的な認証情報(場合によってはパスコード)を OAuth2 アクセス トークンおよび更新トークンと交換します。get_token
ユーティリティはユーザーの認証情報を受け入れ、有効なアクセス トークンを返します。トークンを更新できる場合は、トークンを更新して返します。更新トークンが期限切れになると、ユーザー認証情報の入力を求められます。
get_token
ユーティリティはトークンをディスクに格納し、必要なときにすぐに使用できます。また、有効なアクセス トークンを stdout
に出力します。そこから、Postman などのブラウザ拡張機能を使用することも、curl
で使用するために環境変数に埋め込みます。
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 は Apigee SSO モジュールをホストするマシンの IP アドレスまたは DNS 名です。Apigee SSO で TLS を構成した場合は、
https
と正しい TLS ポート番号を使用します。- 次の例のように
ssocli-bundle.zip
バンドルを解凍します。unzip ssocli-bundle.zip
- 次の例のように、
/usr/local/bin
にget_token
をインストールします。./install -b PATH
-b
オプションは別の場所を指定します。 SSO_LOGIN_URL
環境変数に次の形式を使用して、ログイン URL に設定します。export SSO_LOGIN_URL="http://EDGE_SSO_IP_DNS:9099"
ここで、EDGE_SSO_IP_DNS は Apigee SSO モジュールをホストするマシンの IP アドレスです。Apigee SSO で TLS を構成した場合は、
https
と正しい TLS ポート番号を使用します。- (SAML のみ)ブラウザで次の URL に移動してワンタイム パスコードを取得します。
http://EDGE_SSO_IP_DNS:9099/passcode
Apigee SSO で TLS を構成した場合は、
https
と正しい TLS ポート番号を使用します。このリクエストは、ワンタイム パスコードを返します。このパスコードは、その URL を更新して新しいパスコードを取得するか、
get_token
を指定してパスコードを使用してアクセス トークンを生成するまで有効です。パスコードを使用できるのは、SAML IDP による認証の場合のみです。LDAP IDP による認証にパスコードを使用することはできません。
- 次の例のように、
get_token
を呼び出して OAuth2 アクセス トークンを取得します。get_token -u EMAIL_ADDRESS
ここで、EMAIL_ADDRESS は Edge ユーザーのメールアドレスです。
(SAML のみ)次の例のように、メールアドレスに加えてコマンドラインでパスコードを入力します。
get_token -u EMAIL_ADDRESS -p PASSCODE
get_token
ユーティリティは OAuth2 アクセス トークンを取得して画面に出力し、更新トークンを~/.sso-cli
に書き込みます。 - 次の例のように、アクセス トークンを
Bearer
ヘッダーとして Edge Management API 呼び出しに渡します。curl -H "Authorization: Bearer ACCESS_TOKEN" https://MS_IP:8080/v1/organizations/ORG_NAME
- 初めて新しいアクセス トークンを取得した後は、次の例のように、アクセス トークンを取得して 1 つのコマンドで API 呼び出しに渡すことができます。
header=`get_token` && curl -H "Authorization: Bearer $header" https://MS_IP:8080/v1/o/ORG_NAME
この形式のコマンドを使用すると、アクセス トークンが期限切れになると、更新トークンが期限切れになるまで自動的に更新されます。
(SAML のみ)更新トークンの有効期限が切れると、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 でゾーン名を参照する必要があることです。また、SAML IDP で初期アクセス トークンを生成するには、上記の手順のステップ 3 に示すように、パスコードを含める必要があります。
認可のために、予約済みの OAuth2 クライアント認証情報を Authorization
ヘッダーで渡します。この呼び出しにより、アクセス トークンと更新トークンが画面に出力されます。
アクセス トークンを取得する
(LDAP)最初のアクセス トークンと更新トークンを生成するには、次の 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=USER_EMAIL&password=USER_PASSWORD'
(SAML)最初のアクセス トークンと更新トークンを生成するには、次の 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'
SAML IDP による認証には一時的なパスコードが必要ですが、LDAP IDP では必要ありません。
アクセス トークンを更新する
後でアクセス トークンを更新するには、更新トークンを含む次の呼び出しを使用します。
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=REFRESH_TOKEN'