Oracle Cloud Infrastructureドキュメント

CLIのトークン・ベースの認証

CLIのトークン・ベースの認証では、カスタマがセッションを対話形式で認証し、API署名鍵なしの単一セッションにCLIを使用できます。 これにより、Scimでサポートされていないidプロバイダを使用する顧客は、CLIおよびsdkでフェデレーテッド・ユーザー・アカウントを使用できます。

要件

要件は、「要件」のCLIにリストされている要件と同じですが、SSH鍵ペアのかわりに、認証プロセスのwebブラウザが必要です。

トークン・ベースのCLIセッションの開始

webブラウザでコンピュータ上のCLIに対してトークン・ベースの認証を使用するには:

  1. CLIで、次のコマンドを実行します。 これにより、webブラウザが起動します。
    oci session authenticate
  2. ブラウザで、ユーザー資格証明を入力します。 この認証情報は、.configファイルに保存されます。

トークンの検証

トークンが有効であることを検証するには、次のコマンドを実行します:

oci session validate -config-file <path_to_config_file> --profile <profile_name> --auth security_token

セッションの有効期限を示すメッセージが表示されます。 エラーが表示された場合は、プロファイル設定を確認してください。

トークンのリフレッシュ

デフォルトのトークンTTLは、有効期限が切れる前に1時間に設定され、24時間までの有効期間内でリフレッシュできます。

トークンをリフレッシュするには、次のコマンドを実行します:

oci session refresh --profile <profile_name>

ブラウザなしでのトークン・ベースのCLIセッションの開始

webブラウザを使用しないコンピュータでCLIに対してトークン・ベースの認証を使用するには、Web対応のコンピュータからセッションをエクスポートしてから、Webブラウザなしでコンピュータにインポートする必要があります。

ソースからのエクスポートComputer

ソース・コンピュータでブラウザを使用する場合:

  1. CLIで、次のコマンドを実行します:
    oci session authenticate
  2. ターゲット・コンピュータで使用するユーザー資格証明を入力してください。
  3. Zipファイルをエクスポートするには、次のコマンドを実行します:
    oci session export --profile <profile_name> --output-file <output_filename>

エクスポートを確認するには、「トークンの検証」を参照してください。

ターゲットComputerへのインポート

ブラウザのないターゲット・コンピュータで、CLIで次のコマンドを実行します:

oci session import --session-archive <path_to_exported_zip>

インポートをテストするには、次を実行します:

oci iam region list --config-file <path_to_config_file> --profile <profile_name> --auth security_token

これにより、リージョンのリストが返されます。 このコマンドを正常に実行すると、トークン認証が想定どおりに機能していることが検証されます。

ブラウザなしでのComputerでのスクリプトの実行

認証をターゲット・コンピュータにインポートした後は、次の設定を使用してCLIおよびsdkを実行できます。

CLIの場合

CLIでスクリプトを実行するには、次のサフィクスを追加します:

--config-file <path_to_config_file> --profile <profile_name> --auth security_token

SDKの場合

ターゲット・コンピュータでSdkを実行するには、トークン・ファイルを読み込んでから、それを使用してSecurityTokenSigner.を初期化する必要があります

「トークン・ベースのCLIセッションの開始」に示すトークン・ファイルを作成した後は、次のプロセスを使用します。

ノート

これらのコード・サンプルは、Python SDKを使用してこれを実現する方法を示しています。
その他のSdkの場合、同じ手順に従って構文を調整します。

  1. .configファイルのsecurity_token_fileパラメータからトークン・ファイルを読み取ります。
  2. config = oci.config.from_file(profile_name='TokenDemo')
    token_file = config['security_token_file']
    token = None
    with open(token_file, 'r') as f:
         token = f.read()
  3. .configファイルで指定された秘密鍵を読み取ります。
  4. private_key = oci.signer.load_private_key_from_file(config['key_file'])
  5. ユーザーが指定したリージョンをターゲットとする初期SDKクライアントを作成します。
  6. signer = oci.auth.signers.SecurityTokenSigner(token, private_key) 
    client = oci.identity.IdentityClient({'region': region}, signer=signer)
  7. アイデンティティのリクエストを行います。
  8. result = client.list_region_subscriptions(config['tenancy'])