全部產品
Search
文件中心

Identity as a Service:環境準備

更新時間:Mar 25, 2026

在使用 Java SDK 擷取 IDaaS 應用令牌前,需按照本文提供的步驟來準備環境。

環境要求

  • 安裝 JDK 1.8 或以上版本。

  • 安裝 Maven。

安裝 Java SDK

通過 Maven 方式引入依賴,在 pom.xml 中添加以下依賴。

<dependency>
  <groupId>com.cloud-idaas</groupId>
  <artifactId>idaas-java-core-sdk</artifactId>
  <!--以下版本號碼請替換為 SDK 的最新版本號碼-->
  <version>0.0.4-beta</version>
</dependency>

SDK 最新版本參考:https://mvnrepository.com/artifact/com.cloud-idaas/idaas-java-core-sdk

Function Compute(FC) 等情境下,IDaaS 支援 OpenAPI 認證方式,使用阿里雲的身份憑證(AK/SK、STS)擷取 M2M 用戶端令牌,還需要在 pom.xml 中添加阿里雲認證方式擴充外掛程式。

<dependency>
  <groupId>com.cloud-idaas</groupId>
  <artifactId>idaas-java-core-alibabacloud-authentication-plugin</artifactId>
  <!--以下版本號碼請替換為阿里雲認證擴充外掛程式的最新版本號碼-->
  <version>0.0.1-beta</version>
</dependency>

阿里雲認證擴充外掛程式最新版本參考:https://mvnrepository.com/artifact/com.cloud-idaas/idaas-java-core-alibabacloud-authentication-plugin

指定設定檔

設定檔的預設路徑:~/.cloud_idaas/client-config.json。如未明確指定,則預設從該路徑下擷取設定檔。

可以通過 Java 系統屬性或環境變數指定設定檔路徑:

  • Java 系統屬性名:cloud_idaas_config_path

  • 環境變數名:CLOUD_IDAAS_CONFIG_PATH

Java 系統屬性配置樣本:

-Dcloud_idaas_config_path=/.../client-config.json

// 在 SpringBoot 專案中,設定檔可放在 src/main/resources/ 下,直接通過類路徑指定
-Dcloud_idaas_config_path=classpath:client-config.json

環境變數配置樣本:

CLOUD_IDAAS_CONFIG_PATH=/.../client-config.json

設定檔說明

設定檔樣本如下:

{
  "idaasInstanceId": "idaas_xxx",      
  "clientId": "app_xxx",               
  "issuer":"https://xxx/api/v2/iauths_system/oauth2",               
  "tokenEndpoint": "https://xxx/api/v2/iauths_system/oauth2/token",
  "scope": "api.example.com|read:file",
  "openApiEndpoint":"eiam.[region_id].aliyuncs.com",
  "developerApiEndpoint":"eiam-developerapi.[region_id].aliyuncs.com",
  "authnConfiguration": {
    "identityType": "CLIENT",
    "authnMethod": "CLIENT_SECRET_POST",
    "clientSecretEnvVarName": "IDAAS_CLIENT_SECRET"
  },
  "httpConfiguration": {
    "connectTimeout": 5000,
    "readTimeout": 10000
  }
}

參數說明

欄位名

備忘

idaasInstanceId

必填,IDaaS EIAM 的執行個體 ID。

clientId

必填,IDaaS 應用的應用 ID,可在對應 IDaaS 應用中查看。

issuer

必填,IDaaS EIAM 執行個體的 Issuer 端點,可在 IDaaS EIAM 執行個體下的任意 M2M 應用中查看。

tokenEndpoint

必填,IDaaS EIAM 執行個體的令牌端點,可在 IDaaS EIAM 執行個體下的任意 M2M 應用中查看。

scope

必填,指定要訪問的 M2M 服務端應用的受眾標識和許可權標識,格式為受眾標識|許可權標識

在擷取託管到 IDaaS 的 RAM 角色的 STS Token 或憑據的情境下,固定為 urn:cloud:idaas:pam|.all,表示 IDaaS 內建的 scope。

openApiEndpoint

可選,IDaaS 的 OpenAPI 地址,使用OpenAPI 認證時使用。

服務地址從雲身份服務 (IDaaS EIAM)-阿里雲OpenAPI開發人員門戶中擷取。

若應用部署在阿里雲 VPC 中,且與 IDaaS 執行個體在同一地區,則可以通過內網 VPC 地址訪問,見阿里雲OpenAPI開發人員門戶中的 VPC 地址。

developerApiEndpoint

可選,IDaaS 的 DeveloperAPI 地址,擷取託管到 IDaaS 的 RAM 角色的 STS Token 或憑據時使用。

服務地址從雲身份服務 (IDaaS EIAM)-阿里雲OpenAPI開發人員門戶中擷取。

若應用部署在阿里雲 VPC 中,且與 IDaaS 執行個體在同一地區,則可以通過內網 VPC 地址訪問,見阿里雲OpenAPI開發人員門戶中的 VPC 地址。

authnConfiguration

  • identityType:可選,預設值為CLIENT,目前只支援CLIENT,表示 M2M 用戶端應用以機器身份進行認證。

  • authnMethod:必填,認證方式。不同認證方式所需的 authnConfiguration 欄位不同,詳細對應關係參見authnMethod 欄位值 和 authnConfiguration 欄位對應關係

httpConfiguration

http 協議相關配置,包含 2 個欄位:

  • connectTimeout:可選,用戶端與服務端建立串連的最大等待時間(毫秒),預設為 5000。

  • readTimeout:可選,串連建立後,用戶端等待服務端返回資料的最大等待時間(毫秒),預設為 10000。

authnMethod 欄位值 和 authnConfiguration 欄位對應關係

authnMethod

需要的 authnConfiguration 欄位

authnConfiguration 欄位說明

CLIENT_SECRET_BASIC

clientSecretEnvVarName

欄位值為環境變數名稱,通過該環境變數讀取 M2M 用戶端應用的 Client Secret 。

CLIENT_SECRET_POST

CLIENT_SECRET_JWT

PRIVATE_KEY_JWT

privateKeyEnvVarName

欄位值為環境變數名稱,通過該環境變數讀取 M2M 用戶端應用的 Private Key。

PKCS7

applicationFederatedCredentialName

PKCS7 的聯邦憑證名稱。需提前建立聯邦信任源,相關配置可參考:建立聯邦憑證

clientDeployEnvironment

部署環境,目前只支援 ALIBABA_CLOUD_ECS

OIDC

applicationFederatedCredentialName

OIDC 的聯邦憑證名稱。需提前建立聯邦信任源,相關配置可參考:建立聯邦憑證

clientDeployEnvironment

部署環境,目前只支援 KUBERNETES

oidcTokenFilePath

可選,用於指定 Service Account Token 檔案的路徑。若未配置,則嘗試通過 oidcTokenFilePathEnvVarName 指定的環境變數讀取路徑;若兩者均未設定,則預設使用 Kubernetes 標準路徑:/var/run/secrets/kubernetes.io/serviceaccount/token。

oidcTokenFilePathEnvVarName

可選,未指定 oidcTokenFilePath 時生效,欄位值為環境變數名稱,通過該環境變數讀取 Service Account Token 的檔案路徑。

PCA

applicationFederatedCredentialName

PCA 的聯邦憑證名稱。需提前建立聯邦信任源,相關配置可參考:建立聯邦憑證

clientX509Certificate

終端認證,格式為:

-----BEGIN CERTIFICATE-----

xxx

-----END CERTIFICATE-----

x509CertChains

中間認證列表,多張認證使用換行拼接,格式:

-----BEGIN CERTIFICATE-----

xxx

-----END CERTIFICATE-----

-----BEGIN CERTIFICATE-----

xxx

-----END CERTIFICATE-----

privateKeyEnvVarName

欄位值為環境變數名稱,通過該環境變數讀取 M2M 用戶端應用的 Private Key。

PLUGIN

pluginName

pluginName 為擴充外掛程式名,目前只支援 alibabacloudPluginCredentialProvider,即阿里雲 OpenAPI 認證方式。使用阿里雲 OpenAPI 認證時需要完成以下配置:

配置參數樣本

不同認證方式下的具體的配置樣本。

Client Secret 憑證配置樣本

{
  "idaasInstanceId": "idaas_xxx",      
  "clientId": "app_xxx",               
  "issuer":"https://xxx/api/v2/iauths_system/oauth2",               
  "tokenEndpoint": "https://xxx/api/v2/iauths_system/oauth2/token",
  "scope": "api.example.com|read:file",
  "authnConfiguration": {
    "identityType": "CLIENT",
    "authnMethod": "CLIENT_SECRET_BASIC" 或 "CLIENT_SECRET_POST" 或 "CLIENT_SECRET_JWT",
    "clientSecretEnvVarName": "IDAAS_CLIENT_SECRET"
  }
  "httpConfiguration": {
    "connectTimeout": 5000,
    "readTimeout": 10000
  }
}

公私密金鑰憑證配置樣本

{
  "idaasInstanceId": "idaas_xxx",      
  "clientId": "app_xxx",               
  "issuer":"https://xxx/api/v2/iauths_system/oauth2",               
  "tokenEndpoint": "https://xxx/api/v2/iauths_system/oauth2/token",
  "scope": "api.example.com|read:file",
  "authnConfiguration": {
    "identityType": "CLIENT",
    "authnMethod": "PRIVATE_KEY_JWT",
    "privateKeyEnvVarName": "ENV_PRIVATE_KEY"
  }
  "httpConfiguration": {
    "connectTimeout": 5000,
    "readTimeout": 10000
  }
}

PKCS7 聯邦憑證配置樣本

{
  "idaasInstanceId": "idaas_xxx",      
  "clientId": "app_xxx",               
  "issuer":"https://xxx/api/v2/iauths_system/oauth2",               
  "tokenEndpoint": "https://xxx/api/v2/iauths_system/oauth2/token",
  "scope": "api.example.com|read:file",
  "authnConfiguration": {
    "identityType": "CLIENT",
    "authnMethod": "PKCS7",
    "applicationFederatedCredentialName": "your_pkcs7_federated_credential_name",
    "clientDeployEnvironment": "ALIBABA_CLOUD_ECS"
  }
  "httpConfiguration": {
    "connectTimeout": 5000,
    "readTimeout": 10000
  }
}

OIDC 聯邦憑證配置樣本

{
  "idaasInstanceId": "idaas_xxx",      
  "clientId": "app_xxx",               
  "issuer":"https://xxx/api/v2/iauths_system/oauth2",               
  "tokenEndpoint": "https://xxx/api/v2/iauths_system/oauth2/token",
  "scope": "api.example.com|read:file",
  "authnConfiguration": {
    "identityType": "CLIENT",
    "authnMethod": "OIDC",
    "applicationFederatedCredentialName": "your_oidc_federated_credential_name",
    "clientDeployEnvironment": "KUBERNETES",
 "oidcTokenFilePath": "/var/run/secrets/.../token"(可選),
 "oidcTokenFilePathEnvVarName": "ENV_OIDC_TOKEN_FILE_PATH"(可選)
  }
  "httpConfiguration": {
    "connectTimeout": 5000,
    "readTimeout": 10000
  }
}

PCA 聯邦憑證配置樣本

{
  "idaasInstanceId": "idaas_xxx",      
  "clientId": "app_xxx",               
  "issuer":"https://xxx/api/v2/iauths_system/oauth2",               
  "tokenEndpoint": "https://xxx/api/v2/iauths_system/oauth2/token",
  "scope": "api.example.com|read:file",
  "authnConfiguration": {
    "identityType": "CLIENT",
    "authnMethod": "PCA",
 "applicationFederatedCredentialName": "your_pca_federated_credential_name",
    "clientX509Certificate": 
    "-----BEGIN CERTIFICATE-----
    xxxxxx
    -----END CERTIFICATE-----",
    "x509CertChains": 
    "-----BEGIN CERTIFICATE-----
    xxxxxx
    -----END CERTIFICATE-----
    -----BEGIN CERTIFICATE-----
    xxxxxx
    -----END CERTIFICATE-----",
    "privateKeyEnvVarName": "ENV_PRIVATE_KEY"
  }
  "httpConfiguration": {
    "connectTimeout": 5000,
    "readTimeout": 10000
  }
}

OpenAPI 認證配置參考

{
  "idaasInstanceId": "idaas_xxx", 
  "clientId": "app_xxx", 
  "issuer":"https://xxx/api/v2/iauths_system/oauth2", 
  "tokenEndpoint": "https://xxx/api/v2/iauths_system/oauth2/token",
  "scope": "api.example.com|read:file",
  "openApiEndpoint":"eiam.[region_id].aliyuncs.com",
  "authnConfiguration": {
    "identityType": "CLIENT",
    "authnMethod": "PLUGIN",
    "pluginName": "alibabacloudPluginCredentialProvider"
  }
  "httpConfiguration": {
    "connectTimeout": 5000,
    "readTimeout": 10000
  }
}