文档首页 > > 开发指南> SDK简介(旧)> Java> Java SDK使用> Java SDK认证方式

Java SDK认证方式

分享
更新时间:2020/09/29 GMT+08:00

Java SDK支持两种认证方式:token认证和AK/SK认证。

token认证

token认证方式示例代码,参数详情请参考表1

package demo;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.huawei.openstack4j.openstack.OSFactory;
import com.huawei.openstack4j.api.OSClient.OSClientV3;
import com.huawei.openstack4j.core.transport.Config;
import com.huawei.openstack4j.model.common.Identifier;
import com.huawei.openstack4j.model.compute.Server;

public class Demo {
    public static void main(String[] args) {
        //设置认证参数
        String authUrl = "https://iam.example.com/v3";//endpointUrl
        String user = "replace-with-your-username";//用户名
        String password = "replace-with-your-password";//用户密码
        String projectId = "replace-with-your-projectId";//项目ID
        String userDomainId = "replace-with-your-domainId";//账号ID

        //初始化client
        OSClientV3 os = OSFactory.builderV3()
                .endpoint(authUrl)
                .credentials(user, password, Identifier.byId(userDomainId))
                .scopeToProject(Identifier.byId(projectId)).authenticate();

        //设置查询参数
        Map<String, String> filter = new HashMap<String, String>();

        //将需要输入的参数都放入filter里面
        filter.put("limit", "3");

        //调用查询虚拟机列表的接口
        List<? extends Server> serverList = os.compute().servers().list(filter);
        if (serverList.size() > 0) {
            System.out.println("get serverList success, size = " + serverList.size());
            for (Server server : serverList) {
                System.out.println(server);
            }
        } else {
            System.out.println("no server exists.");
        }
    }
}
表1 参数说明

名称

说明

取值样例

authUrl

认证服务(IAM)的Endpoint。

“https://iam.example.com/v3”中的“example”为“区域.云平台域名”,参数详情可以访问这里了解。

https://iam.cn-north-1.myhuaweicloud.com/v3

user

IAM用户名。如何获取,请参考如何获取IAM 用户名、账号ID以及项目ID?

-

password

IAM用户密码。

-

projectId

项目ID。如何获取,请参考如何获取IAM 用户名、账号ID以及项目ID?

-

userDomainId

账号ID。如何获取,请参考如何获取IAM 用户名、账号ID以及项目ID?

-

token具有24小时有效期,如果您的程序运行时间超过24小时,在使用SDK调用API之前,建议您在程序中重新申请一次token,方法如下:

import com.huawei.openstack4j.openstack.OSFactory;
OSFactory.refreshToken();

AK/SK认证

AK/SK认证方式示例代码,参数详情请参考表2

package demo;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.huawei.openstack4j.api.OSClient.OSClientAKSK;
import com.huawei.openstack4j.core.transport.Config;
import com.huawei.openstack4j.model.compute.Server;
import com.huawei.openstack4j.openstack.OSFactory;

public class Demo {
 
 public static void main(String[] args) {
 
  // 设置认证参数
  String ak = "replace-your-ak";
  String sk = "replace-your-sk";
  String projectId = "replace-your-projectId";
  String region = "replace-your-region"; //example: region = "cn-north-1"
  String cloud = "myhuaweicloud.com";
 
  OSClientAKSK osclient = OSFactory.builderAKSK().credentials(ak, sk, region, projectId, cloud) .authenticate();
 
  // 设置查询参数
  Map<String , String> filter = new HashMap<String, String>();
  // 将需要输入的参数都放入filter里面
  filter.put("limit", "3");
  
  // 调用查询虚拟机列表的接口
  List<? extends Server> serverList = osclient.compute().servers().list(filter);
  if(serverList.size() > 0) 
  {
   System.out.println("get serverList success, size = " + serverList.size());
   for (Server server : serverList) {
    System.out.println(server);
   }
  } 
  else {
   System.out.println("no server exists.");
  }
 }
}
表2 参数说明

名称

说明

取值样例

ak/sk

AK/SK访问密钥。

说明:
  • AK/SK生成说明:登录控制台,进入“我的凭证”,点击“管理访问密钥”创建AK/SK。
  • AK/SK签名时间与UTC时间误差不可以超过15分钟,否则会鉴权失败。
  • AK/SK签名连续失败超过5次,将锁定对应访问的源IP的AK/SK请求,持续5分钟。

-

projectId

项目ID。如何获取项目ID请参考如何获取IAM 用户名、账号ID以及项目ID?

-

region

区域名称。

cn-north-1

cloud

云平台域名。

myhuaweicloud.com

分享:

    相关文档

    相关产品

文档是否有解决您的问题?

提交成功!非常感谢您的反馈,我们会继续努力做到更好!
反馈提交失败,请稍后再试!

*必选

请至少选择或填写一项反馈信息

字符长度不能超过200

提交反馈 取消

如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨

智能客服提问云社区提问