在使用 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 或凭据的场景下,固定为 |
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 |
|
httpConfiguration | http 协议相关配置,包含 2 个字段:
|
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 | 部署环境,目前只支持 | |
OIDC | applicationFederatedCredentialName | OIDC 的联邦凭证名称。需提前创建联邦信任源,相关配置可参考:创建联邦凭证。 |
clientDeployEnvironment | 部署环境,目前只支持 | |
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 为扩展插件名,目前只支持
|
配置参数示例
不同认证方式下的具体的配置示例。
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
}
}