环境准备

更新时间:
复制为 MD 格式

在使用 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

函数计算(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
  }
}