get_token ユーティリティと acurl ユーティリティの使用

Apigee には、Apigee SSO と Edge 管理 API とのやり取りを簡素化する get_token ユーティリティと acurl ユーティリティが用意されています。これらのツールは、トークンの生成、キャッシュ、更新、挿入を自動的に処理します。

ユーティリティは、OpenLDAP ノードの /opt/apigee/apigee-openldap/bin/ にインストールされます。

get_token ユーティリティ

get_token ユーティリティは、OIDC/OAuth2 アクセス トークンと更新トークンを取得します。2 つの主要な認証フローをサポートし、組み込みのトークン キャッシュが含まれています。

認証フロー

  • デバイスコードフロー(RFC 8628): 外部 ID プロバイダ(SAML、Okta、OIDC など)を介して認証するユーザー向けに設計されています。メールアドレス(-u <email>)のみを渡すと、このフローが開始され、ブラウザで承認するための URL とコードが表示されます。
  • パスワード付与(ROPC): ヘッドレス マシンユーザーと自動スクリプト向けに設計されています。ユーザー名とパスワードの両方(-u <user>:<password>)を渡すと、ブラウザ操作なしで Apigee SSO に対して直接認証されます。

トークン キャッシュと自動更新

get_token ユーティリティはトークンのライフサイクルを自動的に管理するため、有効期限を手動で追跡する必要はありません。

  • キャッシュの確認: 呼び出されると、get_token は ~/.sso-cli/<username>-token.json のローカル キャッシュを確認します。有効なトークンが存在し、期限切れになっていない場合は、再認証せずにトークンを再利用します。
  • 自動更新: キャッシュされたアクセス トークンの有効期限が切れていても、有効な更新トークンが存在する場合、ユーティリティは Apigee SSO で更新トークンを新しいアクセス トークンと自動的に交換します。

環境変数

必要に応じて、次の環境変数を使用して get_token の動作をカスタマイズできます。

  • SSO_LOGIN_URL: Apigee SSO の URL(デフォルト: http://localhost:9099)。
  • CLIENT_ID: OAuth2 クライアント ID(デフォルト: edgecli)。
  • CLIENT_SECRET: OAuth2 クライアント シークレット(デフォルト: edgeclisecret)。

acurl ユーティリティ

acurl ユーティリティは、標準の curl の透過的なラッパーです。すべての API リクエストに有効な Bearer トークンが含まれるようにします。

  • 引数の分離: ユーティリティは -u <user:password> または -u <user> 引数を抽出し、get_token に渡します。他のすべての引数(-X、-H、-d、-v、-s など)は、標準の curl に直接転送されます。
  • 実行: get_token から有効なトークンを取得または取得すると、acurl は自動的に -H "Authorization: Bearer <token>" ヘッダーを curl 呼び出しに挿入します。

使用例

例 1: ユーザーのインタラクティブ ログイン

/opt/apigee/apigee-openldap/bin/acurl -u developer@apigee.com http://MS_IP_DNS:8080/v1/organizations

このコマンドは一時停止し、ブラウザにアクセスして外部 IDP を介して認証するようにユーザーに求め、承認されると API 呼び出しを実行します。

例 2: マシンユーザーのヘッドレス ログイン

/opt/apigee/apigee-openldap/bin/acurl -u jenkins-bot@apigee.com:Secret123! http://MS_IP_DNS:8080/v1/organizations

このコマンドは、パスワード付与を介して直接認証し、API 呼び出しを直ちに実行します。

例 3: キャッシュされたトークンの再利用

/opt/apigee/apigee-openldap/bin/acurl http://MS_IP_DNS:8080/v1/users

トークンは前のステップでキャッシュされているため、-u 引数を再度指定する必要はありません。ユーティリティはキャッシュされたトークンを読み取り、自動的に挿入します。