3.3.4 アクセス・トークンの作成

このトピックでは、アイデンティティ・プロバイダとしてOracle IDCSまたはOracle IAMを使用する場合にアクセス・トークンを作成するための詳細を示します。

KeycloakまたはMicrosoft ADをアイデンティティ・プロバイダとして使用する場合は、アイデンティティ・プロバイダの設定およびアクセス・トークンの作成の詳細について製品ドキュメントを参照してください。

サービスに対するAPIコールは、有効なアクセス・トークンが必要です。アクセス・トークンを作成します。これは、サービスに対する後続のAPIコールで指定できます。アクセス・トークンの他に、サービスに対する後続のAPIコールでリフレッシュ・トークンを指定することもできます。MicroTxは、リフレッシュ・トークンを使用して期限切れのアクセス・トークンをリフレッシュします。

開始する前に、アイデンティティ・プロバイダを設定したことと、クライアントID、クライアント・シークレットおよびドメインURLの値を書き留めたことを確認します。
  1. ターミナルを起動し、次のコマンドを入力します。
    echo -n "clientid:clientsecret" | base64 -w 0 

    ここで、clientid:clientsecretを環境の値で置き換えます。-w 0は、改行を削除するためにLinuxの場合にコマンドに追加されます。

    クライアントIDおよびクライアント・シークレットのbase64エンコードされた値が返されます。この値は後で指定する必要があるため書き留めておきます。

    環境に応じて、任意のbase64クライアントを使用してclientid:clientsecretをエンコードできます。

  2. 返された値をコピーします。この値はアクセス・トークンを作成するたびに指定する必要があります。
  3. 次のcURLコマンドの例に示すように、base64エンコードされた値を使用してアクセス・トークンを取得します。アクセス・トークンのみを生成するか、リフレッシュ・トークンも生成するかに応じて、次のいずれかのコマンドを実行します。
    • 次のコマンドによってアクセス・トークンが作成されます。

      コマンド構文

      curl -i 
      -H "Authorization:Basic {base64 encoded value of clientid:clientsecret}"
      -H "Content-Type: application/x-www-form-urlencoded;charset=UTF-8"
      --request POST https://domain-url/oauth2/v1/token
      -d "grant_type=password&username=username&password&scope=urn:opc:idm:__myscopes__"
      

      curl -i 
      -H "Authorization:Basic ZWY1N2E1OWUyZjY..."
      -H "Content-Type: application/x-www-form-urlencoded;charset=UTF-8"
      --request POST https://idcs-a83e4de370ea4db1b8c703a0b742ce74.identity.oraclecloud.com/oauth2/v1/token
      -d "grant_type=password&username=acme@example.com&password&scope=urn:opc:idm:__myscopes__"
    • 次のコマンドによってアクセス・トークンとリフレッシュ・トークンが作成されます。

      コマンド構文

      curl -i 
      -H "Authorization:Basic {base64 encoded value of clientid:clientsecret}"
      -H "Content-Type: application/x-www-form-urlencoded;charset=UTF-8"
      --request POST https://domain-url/oauth2/v1/token
      -d "grant_type=password&scope=urn:opc:idm:__myscopes__+offline_access&username=username&password=password"

      curl -i 
      -H "Authorization:Basic ZWY1N2E1OWUyZjY..."
      -H "Content-Type: application/x-www-form-urlencoded;charset=UTF-8"
      --request POST https://idcs-a83e4de370ea4db1b8c703a0b742ce74.identity.oraclecloud.com/oauth2/v1/token
      -d "grant_type=password&scope=urn:opc:idm:__myscopes__+offline_access&username=acme@example.com&password=password"
  4. 次の例に示すように、レスポンスのaccess_token値をコピーします。

    出力例

    {
      "access_token":"eyJ4Lm...",
      "expires_in": 300,
      "refresh_expires_in": 1800,
      "refresh_token": "ey5Gkr...",
      "token_type": "Bearer",
      "not-before-policy": 0,
      "session_state": "c966d...",
      "scope": "profile email"
    }
    

    レスポンス例は、読みやすくするために省略記号(...)を使用して一部を省いています。

    実際のトークンのみ(引用符に囲まれたaccess_token値とrefresh_token値)をコピーするようにしてください。

  5. 次のLinuxホストの例に示すように、アクセス・トークンおよびリフレッシュ・トークンを環境変数に格納します。
    export TOKEN="eyJ4Lm..."
    export REFRESH_TOKEN="ey5Gkr..."
  6. 次のLinuxホストの例に示すように、認証cookieを環境変数に格納します。
    export OTMM_COOKIE="eyJh...x_THw"

    値の例は、読みやすくするために省略記号(...)を使用して一部を省いています。

OAuth 2.0トークンを取得した後、サービスに対する後続のAPIコールを作成するときに、authorizationおよびrefresh-tokenヘッダーのトークンを使用します。