指定された IDaaS インスタンス内のアプリケーションに対して、認証情報に基づいてアクセストークンを生成します。
操作説明
次のメソッドがサポートされています: 認証コード、デバイスフロー、リフレッシュトークン、クライアントクレデンシャル、パスワード。
1. 認証コード
シナリオ:これは標準的な OAuth 2.0 認証コードフローであり、フロントエンドでのインタラクションを伴う Web アプリケーションに適しています。呼び出し例:
POST /v2/{instanceId}/{applicationId}/oauth2/token
Content-Type: application/x-www-form-urlencoded
grant_type=authorization_code
&code={authorization_code}
&redirect_uri={redirect_uri}
&client_id={client_id}
&client_secret={client_secret}
パラメーター:
● code: 認証エンドポイントから取得した認証コード。
● redirect_uri: 認証コードを取得するために使用された `redirect_uri` と同じである必要があります。
1.1 パブリッククライアントの認証コード
シナリオ:このシナリオは、シングルページアプリケーション (SPA) やネイティブアプリなど、シークレットを安全に保存できないアプリケーションに適しています。このフローでは `client_secret` は不要ですが、Proof Key for Code Exchange (PKCE) メカニズムを使用する必要があります。呼び出し例:
POST /v2/{instanceId}/{applicationId}/oauth2/token
Content-Type: application/x-www-form-urlencoded
grant_type=authorization_code
&code={authorization_code}
&redirect_uri={redirect_uri}
&client_id={client_id}
&code_verifier={code_verifier}
パラメーター:
● code_verifier: PKCE メカニズムのコードベリファイア。クライアントは認証リクエストを開始する際にこれを生成し、`code_challenge` を導出するために使用します。トークンと交換する際には、この値を送信する必要があります。これは `code_challenge` を生成するために使用された値と同一である必要があります。
Java で `code_verifier` と `code_challenge` を生成する例:
String codeVerifier = Base64.getUrlEncoder().withoutPadding().encodeToString(new SecureRandom().generateSeed(43));
String codeChallenge = Base64.getUrlEncoder().withoutPadding().encodeToString(java.security.MessageDigest.getInstance("SHA-256").digest(codeVerifier.getBytes()));
2. デバイスフロー
シナリオ:このシナリオは、TV や IoT デバイスなど、入力制約のあるデバイスに適しています。呼び出し例:
POST /v2/{instanceId}/{applicationId}/oauth2/token
Content-Type: application/x-www-form-urlencoded
grant_type=urn:ietf:params:oauth:grant-type:device_code
&device_code={device_code}
&client_id={client_id}
&client_secret={client_secret}
デバイスコードを取得するには、まず /oauth2/device/code を呼び出して `device_code` と `user_code` を取得します。
2.1 パブリッククライアントのデバイスフロー
シナリオ:このシナリオは、対話型ログインが不便な場合や、クライアントがパブリッククライアントである場合に使用されます。呼び出し例:
POST /v2/{instanceId}/{applicationId}/oauth2/token
Content-Type: application/x-www-form-urlencoded
grant_type=urn:ietf:params:oauth:grant-type:device_code
&device_code={device_code}
&client_id={client_id}
3. リフレッシュトークン
シナリオ:このシナリオでは、`refresh_token` を使用して新しいアクセストークンを取得します。呼び出し例:
POST /v2/{instanceId}/{applicationId}/oauth2/token
Content-Type: application/x-www-form-urlencoded
grant_type=refresh_token
&refresh_token={refresh_token}
&client_id={client_id}
&client_secret={client_secret}
4. クライアントクレデンシャル
シナリオ:このシナリオは、ユーザーの関与なしにサーバー間認証を行うためのものです。呼び出し例:
POST /v2/{instanceId}/{applicationId}/oauth2/token
Content-Type: application/x-www-form-urlencoded
grant_type=client_credentials
&client_id={client_id}
&client_secret={client_secret}
&scope={scope}
5. パスワード
シナリオ:このシナリオでは、従来のユーザー名とパスワードによる認証を使用します。このメソッドは注意して使用してください。呼び出し例:
POST /v2/{instanceId}/{applicationId}/oauth2/token
Content-Type: application/x-www-form-urlencoded
grant_type=password
&username={username}
&password={password}
&client_id={client_id}
&scope={scope}
今すぐお試しください
テスト
RAM 認証
リクエスト構文
POST /v2/{instanceId}/{applicationId}/oauth2/token HTTP/1.1
パスパラメーター
|
パラメーター |
型 |
必須 / 任意 |
説明 |
例 |
| instanceId |
string |
必須 |
インスタンス ID。 |
idaas_ue2jvisn35ea5lmthk267xxxxx |
| applicationId |
string |
必須 |
アプリケーション ID。 |
app_mkv7rgt4d7i4u7zqtzev2mxxxx |
リクエストパラメーター
|
パラメーター |
型 |
必須 / 任意 |
説明 |
例 |
| client_id |
string |
任意 |
クライアント ID。 |
app_mkv7rgt4d7i4u7zqtzev2mxxxx |
| client_secret |
string |
任意 |
クライアントシークレット。`grant_type` が `client_credentials` で `client_secret_post` メソッドが使用される場合に、このパラメーターは必須です。 |
CSEHDcHcrUKHw1CuxkJEHPveWRXBGqVqRsxxxx |
| grant_type |
string |
必須 |
認証グラントタイプ。次のタイプがサポートされています:
|
client_credentials |
| code |
string |
任意 |
認証コード。`grant_type` が `authorization_code` の場合に、このパラメーターは必須です。 |
xxxx |
| username |
string |
任意 |
ユーザー名。パスワードグラントタイプの場合、このパラメーターは必須です。 |
uesrname_001 |
| password |
string |
任意 |
ユーザー名。このパラメーターは、パスワードモードで必須です。 |
xxxxxx |
| device_code |
string |
任意 |
デバイスコード。`grant_type` が `urn:ietf:params:oauth:grant-type:device_code` (デバイスフロー) の場合に、このパラメーターは必須です。 |
xxxx |
| redirect_uri |
string |
任意 |
リダイレクト URI。認証コードグラントタイプの場合、このパラメーターは必須です。認証コードを取得するためのリクエスト内のリダイレクト URI と一致する必要があります。 |
xxx |
| refresh_token |
string |
任意 |
リフレッシュトークン。`grant_type` が `refresh_token` (リフレッシュトークングラント) の場合に、このパラメーターは必須です。 |
ATxxx |
| code_verifier |
string |
任意 |
コードベリファイア。PKCE が有効な場合の認証コードグラントタイプで使用されます。 |
xxx |
| exclusive_tag |
string |
任意 |
除外タグ。 |
ATxxx |
| scope |
string |
任意 |
スコープ。このパラメーターはオプションです。複数の値がサポートされています。複数の値はスペースで区切ります。有効な値:
|
xxxx |
レスポンスフィールド
|
フィールド |
型 |
説明 |
例 |
|
object |
応答。 |
||
| token_type |
string |
トークンタイプ。有効な値: Basic - Basic タイプ、Bearer - Bearer タイプ 列挙値:
|
Bearer |
| access_token |
string |
アクセストークン。 |
ATxxx |
| refresh_token |
string |
リフレッシュトークン。 |
RTxxx |
| expires_in |
integer |
トークンの有効期間 (秒単位)。 |
1200 |
| expires_at |
integer |
有効期限。値は UNIX タイムスタンプ (秒単位) です。 |
1653288641 |
| id_token |
string |
ID トークン。 |
xxxxx |
例
成功レスポンス
JSONJSON
{
"token_type": "Bearer",
"access_token": "ATxxx",
"refresh_token": "RTxxx",
"expires_in": 1200,
"expires_at": 1653288641,
"id_token": "xxxxx"
}
エラーコード
完全なリストについては、「エラーコード」をご参照ください。
変更履歴
完全なリストについては、「変更履歴」をご参照ください。