全部產品
Search
文件中心

Identity as a Service:GenerateToken - 產生應用認證token

更新時間:Oct 10, 2025

使用憑證資訊,產生指定IDaaS EIAM執行個體下某個應用的access token。

介面說明

目前支援的方式:授權碼模式、裝置流、重新整理 token、用戶端模式、賬密模式。

1. 授權碼模式(Authorization Code)

適用情境:標準 OAuth 2.0 授權碼流程,適用於有前端互動的 Web 應用程式。 調用樣本:

POST /v2/{instanceId}/{applicationId}/oauth2/token
Content-Type: application/x-www-form-urlencoded

grant_type=authorization_code
&code={授權碼}
&redirect_uri={回調地址}
&client_id={用戶端識別碼}
&client_secret={用戶端密鑰}

參數說明:

● code:通過授權端點擷取的授權碼。

● redirect_uri:必須與擷取 code 時使用的 redirect_uri 一致

1.1 公用用戶端下的授權碼模式

適用情境:適用於無法安全儲存密鑰的應用,如 SPA、原生應用。該流程中,無需使用 client_secret,但必須使用 PKCE 機制。調用樣本:

POST /v2/{instanceId}/{applicationId}/oauth2/token
Content-Type: application/x-www-form-urlencoded

grant_type=authorization_code
&code={授權碼}
&redirect_uri={回調地址}
&client_id={用戶端識別碼}
&code_verifier={code_verifier}

參數說明:

● code_verifier:PKCE 機制中的驗證密鑰,用戶端在發起授權請求時產生,並用於派生 code_challenge。在換取 token 時,必須將此值原樣提交,且必須與產生 code_challenge 時使用的值一致。

code_verifier 和 code_challenge 產生的 Java 樣本:

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. 裝置流(Device Flow)。

適用情境:適用於電視、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={裝置碼}
&client_id={用戶端識別碼}
&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={裝置碼}
&client_id={用戶端識別碼}

3. 重新整理 Token(Refresh Token)。

適用情境:使用 refresh_token 擷取新的 access_token。調用樣本:

POST /v2/{instanceId}/{applicationId}/oauth2/token
Content-Type: application/x-www-form-urlencoded

grant_type=refresh_token
&refresh_token={重新整理權杖}
&client_id={用戶端識別碼}
&client_secret={用戶端密鑰}

4. 用戶端模式(Client Credentials)。

適用情境:服務端間認證,無需使用者參與。調用樣本:

POST /v2/{instanceId}/{applicationId}/oauth2/token
Content-Type: application/x-www-form-urlencoded

grant_type=client_credentials
&client_id={用戶端識別碼}
&client_secret={用戶端密鑰}
&scope={許可權範圍}

5. 賬密模式(Password)。

適用情境:傳統使用者名稱密碼認證(需謹慎使用)。調用樣本:

POST /v2/{instanceId}/{applicationId}/oauth2/token
Content-Type: application/x-www-form-urlencoded

grant_type=password
&username={使用者名稱}
&password={密碼}
&client_id={用戶端識別碼}
&scope={許可權範圍}

調試

您可以在OpenAPI Explorer中直接運行該介面,免去您計算簽名的困擾。運行成功後,OpenAPI Explorer可以自動產生SDK程式碼範例。

調試

授權資訊

當前API暫無授權資訊透出。

請求文法

POST /v2/{instanceId}/{applicationId}/oauth2/token HTTP/1.1

請求參數

名稱

類型

必填

描述

樣本值

instanceId

string

執行個體 ID。

idaas_ue2jvisn35ea5lmthk267xxxxx

applicationId

string

應用 ID。

app_mkv7rgt4d7i4u7zqtzev2mxxxx

client_id

string

用戶端識別碼。

app_mkv7rgt4d7i4u7zqtzev2mxxxx

client_secret

string

用戶端密鑰,賦值情境: 當 grant_type 為 client_credentials",採用 client_secret_post 方式時,需填寫此值。

CSEHDcHcrUKHw1CuxkJEHPveWRXBGqVqRsxxxx

grant_type

string

授與類型,目前支援的類型如下:

  • client_credentials 用戶端模式,需要傳入 client_id 和 client_secret

  • refresh_token 重新整理權杖

  • authorization_code 授權碼模式

  • urn:ietf:params:oauth:grant-type:device_code 裝置流模式

  • password 帳密模式

client_credentials

code

string

授權 code 碼,傳入情境: grant_type=authorization_code 授權碼模式時,必填參數。

xxxx

username

string

賬戶名,在帳密模式下,必填參數。

uesrname_001

password

string

賬戶名,在帳密模式下,必填參數。

xxxxxx

device_code

string

裝置 code 碼,傳入情境: grant_type=urn:ietf:params:oauth:grant-type:device_code 即裝置流模式時,必填參數。

xxxx

redirect_uri

string

重新導向 URI,傳入情境: grant_type=authorization_code 授權碼模式時,必須參數,與擷取授權碼請求中的重新導向 URI 必須是一致的。

xxx

refresh_token

string

重新整理 token,傳入情境: grant_type=refresh_token 即重新整理權杖模式時,必填參數。

ATxxx

code_verifier

string

授權碼模式下,開啟 PKCE 能力時,對應的驗證 code。

xxx

exclusive_tag

string

排除的 tag。

ATxxx

scope

string

scope 範圍,非必須,支援多選,多個取值以空格分隔。 可選取值:

  • openid

  • email

  • phone

  • profile

xxxx

返回參數

名稱

類型

描述

樣本值

object

響應結果。

token_type

string

token 類型,取值可選範圍: Basic - Basic 類型 Bearer - Bearer 類型

枚舉值:

  • Basic :

    Basic

  • Bearer :

    Bearer

Bearer

access_token

string

access_token。

ATxxx

refresh_token

string

refresh_token。

RTxxx

expires_in

integer

有效時間長度,單位秒。

1200

expires_at

integer

失效時間,格式為 Unix 時間戳記,單位為秒。

1653288641

id_token

string

id_token。

xxxxx

樣本

正常返回樣本

JSON格式

{
  "token_type": "Bearer",
  "access_token": "ATxxx",
  "refresh_token": "RTxxx",
  "expires_in": 1200,
  "expires_at": 1653288641,
  "id_token": "xxxxx"
}

錯誤碼

訪問錯誤中心查看更多錯誤碼。

變更歷史

更多資訊,參考變更詳情