身份验证配置

更新时间: 2023-09-18 17:06:56

本文介绍如何通过阿里云提供的Credentials工具,实现以非AK硬编码的方式进行编程,调用阿里云OpenAPI。

背景信息

AccessKey(简称AK)是阿里云提供给阿里云用户的访问密钥,用于访问阿里云OpenAPI时的身份验证。AccessKey包括AccessKey ID和AccessKey Secret,需妥善保管。AK如果泄露,会威胁该账号下所有资源的安全。访问阿里云OpenAPI时,如果在代码中硬编码明文AK,容易因代码仓库权限管理不当造成AK泄露。

Alibaba Cloud Credentials是阿里云为阿里云开发者用户提供的身份凭证管理工具。配置了Credentials默认凭据链后,访问阿里云OpenAPI时,您无需在代码中硬编码明文AK,可有效保证您账号下云资源的安全。

前提条件

  • 已获取RAM用户账号的AccessKey ID和AccessKey Secret。相关操作,请参见查看RAM用户的AccessKey信息

    重要
    • 阿里云账号(即主账号)的AccessKey泄露会威胁该账号下所有资源的安全。为保证账号安全,强烈建议您为RAM用户创建AccessKey,非必要情况下请勿为阿里云主账号创建AccessKey。

    • RAM用户的AccessKey Secret只能在创建AccessKey时显示,创建完成后不支持查看。请在创建好AccessKey后,及时并妥善保存AccessKey Secret。

  • 已安装阿里云SDK Credentials工具。

    Maven安装方式(推荐使用Credentials最新版本):

    <dependency>
        <groupId>com.aliyun</groupId>
        <artifactId>credentials-java</artifactId>
        <version>0.2.11</version>
    </dependency>
  • JDK版本为1.7及以上。

配置方案

您可以选用以下任意一种方案进行配置。

重要

使用配置文件的方案时,请确保您系统中不存在环境变量ALIBABA_CLOUD_ACCESS_KEY_IDALIBABA_CLOUD_ACCESS_KEY_SECRET。否则,配置文件将不生效。

配置环境变量

阿里云SDK支持通过定义ALIBABA_CLOUD_ACCESS_KEY_IDALIBABA_CLOUD_ACCESS_KEY_SECRET环境变量来创建默认的访问凭证。调用接口时,程序直接访问凭证,读取您的访问密钥(即AccessKey)并自动完成鉴权。

配置方法

配置环境变量ALIBABA_CLOUD_ACCESS_KEY_IDALIBABA_CLOUD_ACCESS_KEY_SECRET

  • Linux和macOS系统配置方法

    执行以下命令:

    export ALIBABA_CLOUD_ACCESS_KEY_ID=<access_key_id>
    export ALIBABA_CLOUD_ACCESS_KEY_SECRET=<access_key_secret>

    <access_key_id>需替换为已准备好的AccessKey ID,<access_key_secret>替换为AccessKey Secret。

  • Windows系统配置方法

    1. 新建环境变量文件,添加环境变量ALIBABA_CLOUD_ACCESS_KEY_IDALIBABA_CLOUD_ACCESS_KEY_SECRET,并写入已准备好的AccessKey ID和AccessKey Secret。

    2. 重启Windows系统。

接口调用方法

通过默认凭据提供链自动创建访问凭证,并在不使用硬编码AccessKey的情况下成功调用云产品OpenAPI接口。

本示例以调用云服务器ECS的DescribeRegions接口为例,因此需先安装ECS Java SDK

import com.aliyun.tea.*;

public class Sample {
  
    public static void main(String[] args_) throws Exception {
        // 使用默认凭证初始化Credentials Client。
        com.aliyun.credentials.Client credentialClient = new com.aliyun.credentials.Client();
        // 初始化Client。
        com.aliyun.ecs20140526.Client ecsClient = new com.aliyun.ecs20140526.Client(
                new com.aliyun.teaopenapi.models.Config()
                        // 配置云产品服务接入地址(endpoint)。
                        .setEndpoint("ecs.aliyuncs.com")
                        // 使用Credential配置凭证。
                        .setCredential(credentialClient)
        );
        // 初始化DescribeRegions请求。
        com.aliyun.ecs20140526.models.DescribeRegionsRequest describeRegionsRequest = new com.aliyun.ecs20140526.models.DescribeRegionsRequest();
        // 初始化运行时配置。
        com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions();
        // 调用DescribeRegions接口并获得响应。
        com.aliyun.ecs20140526.models.DescribeRegionsResponse response = ecsClient.describeRegionsWithOptions(describeRegionsRequest, runtime);
        System.out.println(response.body.toMap());
    }
}

配置文件

通过配置credentials文件创建默认的访问凭证,调用接口时,程序直接访问凭证,读取您的访问密钥(即AccessKey)并自动完成鉴权。

配置方法

  1. 进入Java开发环境。

  2. 创建credentials文件。

    • Linux/macOS系统

      执行以下命令(默认安装路径为.alibabacloud/credentials.ini):

      sudo vi ~/.alibabacloud/credentials.ini
    • Windows系统

      新建文件,并将文件存放在C:\Users\<user_name>\.alibabacloud\credentials.ini

    说明

    如果您想将credentials文件安装到其他指定目录,您需要先配置环境变量ALIBABA_CLOUD_CREDENTIALS_FILE。以Linux和macOS系统为例,执行命令export ALIBABA_CLOUD_CREDENTIALS_FILE=/<example_path>/credentials.ini

  3. 配置credentials文件。

    Credentials工具支持以下几类鉴权方式:

    • 通过自动生成长期有效的STS凭证进行鉴权

      通过您已获取的AccessKey,SDK将自动调用AssumeRole获取STS Token并定期刷新凭证。适用于希望通过阿里云SDK自动更新STS凭证,避免临时凭证失效后还需手动更新STS凭证。

      阿里云STS(Security Token Service)是阿里云提供的一种临时访问权限管理服务,仅支持通过RAM用户使用,不支持通过阿里云主账号使用。

      ; 凭证配置名称。
      [default]
      ; 是否启用配置,若非true则配置无效
      enable=true
      ; 鉴权方式为ram_role_arn。
      type=ram_role_arn
      ; 选填,为STS凭证指定权限策略,进一步限制STS Token的权限,请参见https://help.aliyun.com/document_detail/371864.html。
      policy=<test_policy>
      ; 已准备好的AccessKeyID。
      access_key_id=<access_key_id>
      ; 已准备好的AccessKeySecret。
      access_key_secret=<access_key_secret>
      ; 您阿里云RAM用户的角色Arn,请参见https://help.aliyun.com/document_detail/39744.html。
      role_arn=<ram_role_arn>
      ; 自定义的角色会话名称,用于日志审计时识别对应的操作者。通常设置为调用阿里云访问控制AssumeRole接口时使用的用户身份。
      role_session_name=<session_name>
    • 通过ECS实例RAM角色鉴权

      适用于希望免创建AccessKey、通过为阿里云ECS实例授予RAM角色,来调用云产品接口。

      使用该鉴权方式前,您需要先为ECS实例授予RAM角色。详细信息,请参见授予实例RAM角色

      image

      使用以下配置内容,将默认启用ECS实例RAM角色鉴权方式。

      ; 默认配置。
      [default]
      ; 是否启用配置,若非true则配置无效
      enable=true
      ; 鉴权方式为ecs_ram_role。
      type=ecs_ram_role
      ; ECS实例的RAM角色名称。
      role_name=<ecs_ram_role_name>
    • 通过RSA密钥对配置访问凭证

      仅适用于支持RSA密钥对鉴权的接口。

      ; 默认配置。
      [default]
      ; 是否启用配置,若非true则配置无效
      enable=true
      ; 鉴权方式为rsa_key_pair。
      type=rsa_key_pair
      ; Public Key ID
      public_key_id=<public_key_id>
      ; Private Key 文件
      private_key_file=<private_key_file>
    • 通过credentials文件保存访问凭证

      仅需配置一次AccessKey信息,适用于希望快速接入Credentials工具的用户。

      ; 默认配置。
      [default]
      ; 是否启用配置,若非true则配置无效
      enable=true
      ; 鉴权方式为access_key。
      type=access_key
      ; 已准备好的AccessKeyID。
      access_key_id=<access_key_id>
      ; 已准备好的AccessKeySecret。
      access_key_secret=<access_key_secret>
    • 需要不定期切换凭证类型

      如果您配置了多个凭证类型,需要不定期启用其中某个凭证,您需要先变更ALIBABA_CLOUD_PROFILE环境变量,将环境变量的值设置为待启用凭证的配置名称。

      export  ALIBABA_CLOUD_PROFILE=client1
      [default]
      enable=true
      type=access_key
      access_key_id=<access_key_id>
      access_key_secret=<access_key_secret>
      
      [client1]
      enable=true
      type=ecs_ram_role
      role_name=<ecs_ram_role_name>
      
      [client2]
      enable=true
      type=ram_role_arn
      policy=<policy_name>
      access_key_id=<access_key_id>
      access_key_secret=<access_key_secret>
      role_arn=<ram_role_arn>
      role_session_name=<role_session_name>
      
      [client3]
      enable=true
      type=rsa_key_pair
      public_key_id=<public_key_id>
      private_key_file=<file_name>
    • 需要同时启用多个凭证类型

      如果您配置了多个凭证类型,需要同时启用多个凭证类型,可以通过设置Credentials包中AuthUtils类clientType属性为待启用凭证的配置名称。

      [default]
      enable=true
      type=access_key
      access_key_id=<access_key_id>
      access_key_secret=<access_key_secret>
      
      [client1]
      enable=true
      type=ecs_ram_role
      role_name=<ecs_ram_role_name>
      
      [client2]
      enable=true
      type=ram_role_arn
      policy=<policy_name>
      access_key_id=<access_key_id>
      access_key_secret=<access_key_secret>
      role_arn=<ram_role_arn>
      role_session_name=<role_session_name>
       import com.aliyun.credentials.utils.AuthUtils;
      // 若不配置AuthUtils类clientType属性,则默认使用default。
      com.aliyun.credentials.Client credentialClient = new com.aliyun.credentials.Client();
      // AuthUtils.setClientType("client1");
      // com.aliyun.credentials.Client credentialClient1 = new com.aliyun.credentials.Client();
      // AuthUtils.setClientType("client2");
      // com.aliyun.credentials.Client credentialClient2 = new com.aliyun.credentials.Client();

接口调用方法

本示例以调用云服务器ECS的DescribeRegions接口为例,因此需先安装ECS Java SDK

import com.aliyun.credentials.utils.AuthUtils;

public class Sample {

    public static void main(String[] args_) throws Exception {
        // 使用默认凭证初始化Credentials Client。
        com.aliyun.credentials.Client credentialClient = new com.aliyun.credentials.Client();
        /* 使用配置文件中client1初始化Credentials Client。*/
        AuthUtils.setClientType("client1");
        com.aliyun.credentials.Client credentialClient1 = new com.aliyun.credentials.Client();
        
        // 初始化Client。
        com.aliyun.ecs20140526.Client ecsClient = new com.aliyun.ecs20140526.Client(
                new com.aliyun.teaopenapi.models.Config()
                        // 配置云产品服务接入地址(endpoint)。
                        .setEndpoint("ecs.aliyuncs.com")
                        // 使用Credentials配置凭证。
                        .setCredential(credentialClient)
        );
        
        // 初始化DescribeRegions请求。
        com.aliyun.ecs20140526.models.DescribeRegionsRequest describeRegionsRequest = new com.aliyun.ecs20140526.models.DescribeRegionsRequest();
        // 初始化运行时配置。
        com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions();
        // 调用DescribeRegions接口并获得响应。
        com.aliyun.ecs20140526.models.DescribeRegionsResponse response = ecsClient.describeRegionsWithOptions(describeRegionsRequest, runtime);
        System.out.println(response.body.toMap());    
    }
}

配置访问令牌(STS Token、RamRoleArn、Bearer Token)

本章节介绍SDK支持的三种令牌鉴权能力:

STS Token

  • 有权限的RAM用户可以使用自己的访问密钥调用AssumeRole接口,以获取某个RAM角色的STS Token,实现通过Credentials工具读取临时安全令牌(STS Token),访问云产品接口。

  • STS Token具有时效性,到期后会自动失效。相比于AK硬编码方式访问接口,使用STS Token可有效减少因长期访问AK导致AK泄露的风险。

  • 本配置方案仅适用于支持阿里云STS的云服务

配置方法

  1. 为该RAM用户授予AliyunRAMFullAccess权限、AliyunSTSAssumeRoleAccess权限。

    详细操作,请参见为RAM用户授权

  2. 调用AssumeRole接口,获取STS Token和临时访问密钥。

    如果调用接口报错,根据界面提示跳转至诊断页面,查看具体的解决方案。

    {
      "RequestId": "EA7A3526-F7DB-54A5-8300-9B742CFAA5EA",
      "AssumedRoleUser": {
        "Arn": "acs:ram::125499367423****:role/STStokenTestRole/STSsessionName",
        "AssumedRoleId": "35219123109646****:STSsessionName"
      },
      "Credentials": {
        "SecurityToken": "exampleToken",
        "AccessKeyId": "STS.exampleAccessKeyID",
        "AccessKeySecret": "exampleAccessKeySecret",
        "Expiration": "2023-03-26T05:26:06Z"
      }
    }
  3. 配置访问凭证。

    运行以下代码示例,传入步骤2中返回的SecurityTokenAccessKeyIdAccessKeySecret值。

    需替换为步骤2中获取的临时AccessKey Secretimport com.aliyun.credentials.Client;
    import com.aliyun.credentials.models.Config;
    
    public class DemoTest {
        public static void main(String[] args) throws Exception{
            Config config = new Config();
            // 凭证类型。
            config.type = "sts";
            // <access_key_id>需替换为步骤2中获取的临时AccessKey ID。
            config.accessKeyId = "<access_key_id>";
            // <access_key_secret>需替换为步骤2中获取的临时AccessKey Secret。
            config.accessKeySecret = "<access_key_secret>";
            // <security_token>需替换为步骤2种获取的临时STS Token。
            config.securityToken = "<security_token>";
            Client client = new Client(config);
        }
    }
    重要

    由于STS Token仅为临时凭证,后续再次通过STS Token方式访问云产品SDK代码时,请调用AssumeRole接口获取新的临时身份凭证。

接口调用方法

通过Credentials工具读取临时安全令牌(STS Token),完成云产品OpenAPI接口的调用。

本示例以调用云服务器ECS的DescribeRegions接口为例,因此需先安装ECS Java SDK

public class Sample {

    public static void main(String[] args_) throws Exception {
        // 使用STS Token初始化Credentials Client。
        com.aliyun.credentials.models.Config credentialsConfig = new com.aliyun.credentials.models.Config() {
            {
                // 凭证类型。
                type = "sts";
                // 设置为调用AssumeRole接口时返回的AccessKeyId值。
                accessKeyId = "<access_key_id>";
                // 设置为调用AssumeRole接口时返回的AccessKeySecret值。
                accessKeySecret = "<access_key_secret>";
                // 设置为调用AssumeRole接口时返回的STS Token值。
                securityToken = "<security_token>";
            }
        };
        com.aliyun.credentials.Client credentialClient = new com.aliyun.credentials.Client(credentialsConfig);
        // 初始化Client。
        com.aliyun.ecs20140526.Client ecsClient = new com.aliyun.ecs20140526.Client(
                new com.aliyun.teaopenapi.models.Config()
                        // 配置云产品服务接入地址(endpoint)。
                        .setEndpoint("ecs.aliyuncs.com")
                        // 使用Credentials配置凭证。
                        .setCredential(credentialClient)
        );
        // 初始化DescribeRegions请求。
        com.aliyun.ecs20140526.models.DescribeRegionsRequest describeInstancesRequest = new com.aliyun.ecs20140526.models.DescribeRegionsRequest();
        // 初始化运行时配置。
        com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions();
        // 调用DescribeRegions接口并获得响应。
        com.aliyun.ecs20140526.models.DescribeRegionsResponse response = ecsClient.describeRegionsWithOptions(describeInstancesRequest, runtime);
        System.out.println(response.body.toMap());
    }
}

RamRoleArn

  • 通过您已获取的AccessKey,SDK将自动调用AssumeRole获取STS Token并定期刷新凭证。

  • 通过指定具体的RAM角色ARN,实现Credentials凭证自动更新STS Token,避免使用AK硬编码的方式访问云产品接口。

  • 本配置方案仅适用于支持阿里云STS的云服务

配置方法

  1. 为该RAM用户授予AliyunRAMFullAccess权限、AliyunSTSAssumeRoleAccess权限。

    详细操作,请参见为RAM用户授权

  2. 配置访问凭证。

    运行以下代码示例,传入AccessKeyIdAccessKeySecretArn等值。

    import com.aliyun.credentials.Client;
    import com.aliyun.credentials.models.Config;
    
    public class DemoTest {
        public static void main(String[] args) throws Exception{
            Config config = new Config();
            // 凭证类型。
            config.type = "ram_role_arn";
            // 设置为AccessKey ID值。
            config.accessKeyId = "<access_key_id>";
            // 设置为AccessKey Secret值。
            config.accessKeySecret = "<access_key_secret>";
            // 阿里云RAM用户的角色ARN,格式为:acs:ram::userId:role/roleName。
            config.roleArn = "<role_arn>";
            // 自定义的角色会话名称。
            config.roleSessionName = "<role_session_name>";
            // 可选,为STS凭证指定权限策略,进一步限制STS Token的权限,请参见https://help.aliyun.com/document_detail/371864.html。
            config.policy = "<policy>";
            Client client = new Client(config);
        }
    }

接口调用方法

通过Credentials工具自动更新临时安全令牌(STS Token),完成云产品OpenAPI接口的调用。

本示例以调用云服务器ECS的DescribeRegions接口为例,因此需先安装ECS Java SDK

public class Sample {

    public static void main(String[] args_) throws Exception {
        // 使用RamRoleArn初始化Credentials Client。
        com.aliyun.credentials.models.Config credentialsConfig = new com.aliyun.credentials.models.Config() {
            {
                // 凭证类型。
                type = "ram_role_arn";
                // 设置为AccessKey ID值。
                accessKeyId = "<access_key_id>";
                // 设置为AccessKey Secret值。
                accessKeySecret = "<access_key_secret>";
                // 阿里云RAM用户的角色ARN,格式为:acs:ram::userId:role/roleName。
                roleArn = "<role_arn>";
                // 自定义的角色会话名称。
                roleSessionName = "<role_session_name>";
            }
        };
        com.aliyun.credentials.Client credentialClient = new com.aliyun.credentials.Client(credentialsConfig);
        // 初始化Client。
        com.aliyun.ecs20140526.Client ecsClient = new com.aliyun.ecs20140526.Client(
                new com.aliyun.teaopenapi.models.Config()
                        // 配置云产品服务接入地址(endpoint)。
                        .setEndpoint("ecs.aliyuncs.com")
                        // 使用Credentials配置凭证。
                        .setCredential(credentialClient)
        );
        // 初始化DescribeRegions请求。
        com.aliyun.ecs20140526.models.DescribeRegionsRequest describeRegionsRequest = new com.aliyun.ecs20140526.models.DescribeRegionsRequest();
        // 初始化运行时配置。
        com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions();
        // 调用DescribeRegions接口并获得响应。
        com.aliyun.ecs20140526.models.DescribeRegionsResponse response = ecsClient.describeRegionsWithOptions(describeRegionsRequest, runtime);
        System.out.println(response.body.toMap());
    }
}

Bearer Token

使用OAuth协议进行用户认证和应用授权,当前仅有极少数产品支持,例如云呼叫中心,您可以前往OpenAPI门户查看。通过指定的Bearer Token,实现免创建AK和Token的方式访问云产品接口。image

配置方法

运行以下示例代码,配置访问凭证。

import com.aliyun.credentials.Client;
import com.aliyun.credentials.models.Config;

public class DemoTest {
    public static void main(String[] args) throws Exception {
        Config config = new Config();
        // 凭证类型。
        config.type = "bearer";
        // 服务器端自动生成的Bearer Token,带有效期。
        config.bearerToken = "<bearer_token>";
        Client client = new Client(config);
    }
}

接口调用方法

本示例以调用云服务器ECS的DescribeRegions接口为例,因此需先安装ECS Java SDK

public class Sample {

    public static void main(String[] args_) throws Exception {
        // 使用Bearer Token初始化Credentials Client。
        com.aliyun.credentials.models.Config credentialsConfig = new com.aliyun.credentials.models.Config() {
            {
                // 凭证类型。
                type = "bearer";
                // 服务器端自动生成的Bearer Token,带有效期。
                bearerToken = "<bearer_token>";
            }
        };
        com.aliyun.credentials.Client credentialClient = new com.aliyun.credentials.Client(credentialsConfig);
        // 初始化Client。
        com.aliyun.ecs20140526.Client ecsClient = new com.aliyun.ecs20140526.Client(
                new com.aliyun.teaopenapi.models.Config()
                        // 配置云产品服务接入地址(endpoint)。
                        .setEndpoint("ecs.aliyuncs.com")
                        // 使用Credentials配置凭证。
                        .setCredential(credentialClient)
        );
        // 初始化DescribeRegions请求。
        com.aliyun.ecs20140526.models.DescribeRegionsRequest describeRegionsRequest = new com.aliyun.ecs20140526.models.DescribeRegionsRequest();
        // 初始化运行时配置。
        com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions();
        // 调用DescribeRegions接口并获得响应。
        com.aliyun.ecs20140526.models.DescribeRegionsResponse response = ecsClient.describeRegionsWithOptions(describeRegionsRequest, runtime);
        System.out.println(response.body.toMap());
    }
}

免创建AK和Token

EcsRamRole

指定具体的ECS角色名称,通过免手动创建AK和Token的方式访问云产品接口。

本配置方案仅适用于支持阿里云RAM的云服务

配置方法

  1. 为ECS实例授予RAM角色。详细信息,请参见授予实例RAM角色

  2. 运行以下示例代码,配置访问凭证。

    import com.aliyun.credentials.Client;
    import com.aliyun.credentials.models.Config;
    
    public class DemoTest {
        public static void main(String[] args) throws Exception {
            Config config = new Config();
            // 凭证类型。
            config.type = "ecs_ram_role";
            // 选填,该ECS角色的角色ARN,不填则自动获取。建议设置,可以减少请求数量。
            config.roleName = "<role_name>";
            Client client = new Client(config);
        }
    }

接口调用方法

本示例以调用云服务器ECS的DescribeRegions接口为例,因此需先安装ECS Java SDK

public class Sample {

    public static void main(String[] args_) throws Exception {
        // 使用EcsRamRole初始化Credentials Client。
        com.aliyun.credentials.models.Config credentialsConfig = new com.aliyun.credentials.models.Config() {
            {
                // 凭证类型。
                type = "ecs_ram_role";
                // 选填,该ECS角色的角色ARN,不填则自动获取。建议设置,可以减少请求数量。
                roleName = "<role_name>";
            }
        };
        com.aliyun.credentials.Client credentialClient = new com.aliyun.credentials.Client(credentialsConfig);
        // 初始化Client。
        com.aliyun.ecs20140526.Client ecsClient = new com.aliyun.ecs20140526.Client(
                new com.aliyun.teaopenapi.models.Config()
                        // 配置云产品服务接入地址(endpoint)。
                        .setEndpoint("ecs.aliyuncs.com")
                        // 使用Credentials配置凭证。
                        .setCredential(credentialClient)
        );
        // 初始化DescribeRegions请求。
        com.aliyun.ecs20140526.models.DescribeRegionsRequest describeRegionsRequest = new com.aliyun.ecs20140526.models.DescribeRegionsRequest();
        // 初始化运行时配置。
        com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions();
        // 调用DescribeRegions接口并获得响应。
        com.aliyun.ecs20140526.models.DescribeRegionsResponse response = ecsClient.describeRegionsWithOptions(describeRegionsRequest, runtime);
        System.out.println(response.body.toMap());
    }
}

Credentials URI

指定Credentials提供地址,实现通过本地或远程的URI来获取并自动更新Token。

配置方法

运行以下示例代码,配置访问凭证。

import com.aliyun.credentials.Client;
import com.aliyun.credentials.models.Config;

public class DemoTest {
    public static void main(String[] args) throws Exception {
        Config config = new Config();
        // 凭证类型。
        config.type = "credentials_uri";
        // Credentials URI,格式为http://local_or_remote_uri/。
        config.credentialsURI = "<local_or_remote_uri>";
        Client client = new Client(config);
    }
}

接口调用方法

本示例以调用云服务器ECS的DescribeRegions接口为例,因此需先安装ECS Java SDK

public class Sample {

    public static void main(String[] args_) throws Exception {
        // 使用Credentials URI初始化Credentials Client。
        com.aliyun.credentials.models.Config credentialsConfig = new com.aliyun.credentials.models.Config() {
            {
                // 凭证类型。
                type = "credentials_uri";
                credentialsURI = "<local_or_remote_uri>";
            }
        };
        com.aliyun.credentials.Client credentialClient = new com.aliyun.credentials.Client(credentialsConfig);
        // 初始化Client。
        com.aliyun.ecs20140526.Client ecsClient = new com.aliyun.ecs20140526.Client(
                new com.aliyun.teaopenapi.models.Config()
                        // 配置云产品服务接入地址(endpoint)。
                        .setEndpoint("ecs.aliyuncs.com")
                        // 使用Credentials配置凭证。
                        .setCredential(credentialClient)
        );
        // 初始化DescribeRegions请求。
        com.aliyun.ecs20140526.models.DescribeRegionsRequest describeRegionsRequest = new com.aliyun.ecs20140526.models.DescribeRegionsRequest();
        // 初始化运行时配置。
        com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions();
        // 调用DescribeRegions接口并获得响应。
        com.aliyun.ecs20140526.models.DescribeRegionsResponse response = ecsClient.describeRegionsWithOptions(describeRegionsRequest, runtime);
        System.out.println(response.body.toMap());
    }
}

阿里云首页 阿里云SDK 相关技术圈