Edge for Private Cloud v. 4.17.09
Basic 認証は、Edge Management API を呼び出す際の認証方法の 1 つです。たとえば、組織に関する情報にアクセスするには、次の 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 認証を使用して署名なしヘッダーで OAuth2 アクセス トークンを渡す API 呼び出しとスクリプトを更新する必要があります。
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 モジュールをホストしているマシンの IP アドレスまたは DNS 名です。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 モジュールをホストしているマシンの IP アドレスまたは DNS 名です。Edge SSO で TLS を構成した場合は、
https
と正しい TLS ポート番号を使用します。- ブラウザで次の URL にアクセスして、ワンタイム パスコードを取得します。
http://edge_sso_IP_DNS:9099/passcode
Edge SSO で TLS を構成した場合は、
https
と正しい TLS ポート番号を使用します。この 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 -u emailAddress -p passcode
の形式でget_token
コマンドを使用します。- アクセス トークンを Bearer ヘッダーとして Edge Management API 呼び出しに渡します。
curl -H "Authorization: Bearer access_token" https://ms_IP:8080/v1/organizations/orgName
初めて新しいアクセス トークンを取得した場合は、次に示すように、単一のコマンドでそのアクセス トークンを API 呼び出しに渡すことができます。
header=`get_token` && curl -H "Authorization: Bearer $header" https://ms_IP:8080/v1/o/orgName
この形式のコマンドを使用する場合、アクセス トークンが期限切れになると、更新トークンが期限切れになるまで自動的に更新されます。
更新トークンが期限切れになると、get_token
により新しいパスコードを入力するよう求められます。上記のステップ 3 に示されている URL にアクセスして新しいパスコードを生成してからでないと、新しい OAuth アクセス トークンは生成できません。
Management API を使用したトークンの取得と更新
Edge Management API を使用してトークンを取得、更新する方法については、Apigee Edge Management API での OAuth2 セキュリティの使用で説明しています。また、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'