文档首页 > > 开发指南> Go> 使用> 认证方式

认证方式

分享
更新时间: 2019/12/24 GMT+08:00

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

token认证

token认证方式示例代码,请参考入门

AKSK认证

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

package main

import (
	"github.com/gophercloud/gophercloud/auth/aksk"
	"github.com/gophercloud/gophercloud"
	"github.com/gophercloud/gophercloud/openstack/compute/v2/servers"
	"github.com/gophercloud/gophercloud/openstack"
	"fmt"
)

func main() {
	//设置认证参数
	akskOpts := aksk.AKSKOptions{
		IdentityEndpoint: "https://iam.example.com/v3",
		DomainID:         "{domainid}",
		ProjectID:        "{projectid}",
		Cloud:            "myhuaweicloud.com",
		Region:           "cn-north-1",
		AccessKey:        "{your AK string}",
		SecretKey:        "{your SK string}",
	}
	//初始化provider client
	provider, providerErr := openstack.AuthenticatedClient(akskOpts)
	if providerErr != nil {
		fmt.Println("init provider client error:", providerErr)
		panic(providerErr)
	}

	//初始化service client
	sc, serviceErr := openstack.NewComputeV2(provider, gophercloud.EndpointOpts{})
	if serviceErr != nil {
		fmt.Println("init compute service client error:", serviceErr)
		panic(serviceErr)
	}

	//列出所有服务器
	allPages, err := servers.List(sc, servers.ListOpts{}).AllPages()

	if err != nil {
		fmt.Println("request server list error:", err)
		panic(err)
	}
	//解析返回值
	allServers, err := servers.ExtractServers(allPages)
	if err != nil {
		fmt.Println("extract response data error:", err)
		if ue, ok := err.(*gophercloud.UnifiedError); ok {
			fmt.Println("ErrCode:", ue.ErrorCode())
			fmt.Println("Message:", ue.Message())
		}
		return
	}
	//打印信息
	fmt.Println("List Servers:")
	for _, s := range allServers {
		fmt.Println("server ID is :", s.ID)
		fmt.Println("server name is :", s.Name)
		fmt.Println("server Status is :", s.Status)
		fmt.Println("server AvailbiltyZone is :", s.AvailbiltyZone)
	}
}

AK/SK生成说明:登录控制台,进入“我的凭证”,点击“管理访问密钥”创建AK/SK。

AKSK签名时间与UTC时间误差不可以超过15分钟,否则会鉴权失败。

AKSK签名连续失败超过5次,将锁定对应访问的源IP的AKSK请求,持续5分钟。

表1 参数说明

名称

说明

取值样例

IdentityEndpoint

认证服务(IAM)的Endpoint。

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

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

DomainID

账号ID。如何获取账号ID请参考如何获取domain_name、project_name和project_id ?

-

ProjectID

项目ID。如何获取项目ID请参考如何获取domain_name、project_name和project_id ?

-

ak/sk

AK/SK访问密钥。

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

-

Region

区域名称。

cn-north-1

Cloud

云平台域名。

myhuaweicloud.com

分享:

    相关文档

    相关产品

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

提交成功!

非常感谢您的反馈,我们会继续努力做到更好!

反馈提交失败,请稍后再试!

*必选

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

字符长度不能超过200

提交反馈 取消

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

跳转到云社区