IBM Cloud Docs
API キーを使用した IBM Cloud IAM トークンの生成

API キーを使用した IBM Cloud IAM トークンの生成

IAM API キーまたはサービス ID の API キーを使用して、IBM Cloud® Identity and Access Management (IAM) トークンを生成します。IBM Cloud API にアクセスできるのは、割り当てられた IAM 役割によって許可されたユーザーのみです。 API を呼び出す各ユーザーは、API が認証するための資格情報を渡す必要があります。

IAM トークンの生成

IAM トークンは、IBM Cloud API キーまたはサービス ID の API キーのいずれかを使用して生成できます。 API キーは、API キー値を紛失したり、アカウント内の API キーを削除したりしなければ再利用できる永久の資格情報です。 このプロセスは、他の IBM Cloud サービスと協力する必要があるアプリケーションを開発している場合にも使用されます。 サービス ID API キーを使用して、各 IBM Cloud サービスに渡されるアクセス・トークンを取得する必要があります。

アクセス・トークンは、遅くとも 1 時間後には有効期限が切れる一時的な資格情報です。 取得したトークンの有効期限が切れた後、IBM Cloud またはサービス API の呼び出しを引き続き行うには、新しいトークンを生成する必要があります。また、トークンの期限が切れた後は、すべてのアカウント内で割り当てられたアクセスのレベルで許可されるアクションのみを実行できます。 特定のアクセス・トークンの有効期間の識別には、API 応答の応答プロパティー expires_in を使用します。

API キーを使用した IAM トークンの生成

API キーを使用してプログラムで IAM トークンを生成するには、以下のサンプルリクエストに示すように IAM Identity Services API または SDK を呼び出す。

curl -X POST 'https://iam.cloud.ibm.com/identity/token' -H 'Content-Type: application/x-www-form-urlencoded' -d 'grant_type=urn:ibm:params:oauth:grant-type:apikey&apikey=MY_APIKEY'

import com.ibm.cloud.sdk.core.security.IamAuthenticator;
import <sdk_base_package>.ExampleService.v1.ExampleService;
...
// Create the authenticator.
IamAuthenticator authenticator = new IamAuthenticator.Builder()
    .apikey("myapikey")
    .build();

// Create the service instance.
ExampleService service = new ExampleService(authenticator);

// 'service' can now be used to invoke operations.
const ExampleServiceV1 = require('mysdk/example-service/v1');
const { IamAuthenticator } = require('mysdk/auth');

const authenticator = new IamAuthenticator({
  apikey: '<iam-api-key>',
});

const myService = new ExampleServiceV1({
  authenticator,
});
from ibm_cloud_sdk_core.authenticators import IAMAuthenticator
from <sdk-package-name>.example_service_v1 import *

# Create the authenticator.
authenticator = IAMAuthenticator('myapikey')

# Construct the service instance.
service = ExampleServiceV1(authenticator=authenticator)

# Use 'service' to invoke operations.
import {
    "github.com/IBM/go-sdk-core/v5/core"
    "<appropriate-git-repo-url>/exampleservicev1"
}
...
// Create the authenticator.
authenticator := &core.IamAuthenticator{
    ApiKey: "myapikey",
}

// Create the service options struct.
options := &exampleservicev1.ExampleServiceV1Options{
    Authenticator: authenticator,
}

// Construct the service instance.
service := exampleservicev1.NewExampleServiceV1(options)

// 'service' can now be used to invoke operations.

予期される応答

{
  "access_token": "eyJhbGciOiJIUz......sgrKIi8hdFs",
  "refresh_token": "not_supported",
  "ims_user_id": 118...90,
  "token_type": "Bearer",
  "expires_in": 3600,
  "expiration": 1473188353,
  "scope": "ibm openid"
}

詳しくは、IAM Identity Services API を参照してください。

詳しくは、 Java SDKをご覧ください。

詳細については、開発キット

詳しくは、 Python SDKをご覧ください。

詳細については、 Go SDKを参照してください。

IAM トークンは最大 60 分間有効で、変更される可能性があります。 トークンが有効期限切れとなった場合、新しいトークンを生成する必要があります。 作成した IAM トークンの有効期限には、プロパティーexpires_inを使用します。