sts.go
1.9 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
package aliyun
import (
"github.com/aliyun/alibaba-cloud-sdk-go/services/sts"
"openapi/pkg/constant"
"openapi/pkg/infrastructure/log"
)
/*
设置参数。 指定角色的ARN。格式:acs:ram::$accountID:role/$roleName/$RoleSessionName 。 mmm-go@1373671070046453.onaliyun.com
配置用户 - ram角色权限-oss授权
$accountID 用户的阿里云账号
$RoleArn 点到ram角色 具体的权限详情 格式 格式:acs:ram::$accountID:role/$roleName/$RoleSessionName
1.使用授权账号(mmm-go@1373671070046453.onaliyun.com)登录
2.RAM访问控制->RAM角色管理->添加权限->为权限设置 oss访问权限
3.查看角色详情-》ARN( acs:ram::1373671070046453:role/role-oss-sts )需要配置给程序使用
4.RAM访问控制->用户(mmm-go@1373671070046453.onaliyun.com)->给用户设置角色
*/
/*
1.前端sts上传需要设置bucket跨域,bucket->权限管理->跨域设置
*/
func DefaultSts() (interface{}, error) {
//构建一个阿里云客户端, 用于发起请求。
//构建阿里云客户端时,需要设置AccessKey ID和AccessKey Secret。
client, err := sts.NewClientWithAccessKey(constant.RegionID, constant.AccessKeyID, constant.AccessKeySecret)
if err != nil {
return nil, err
}
//构建请求对象。
request := sts.CreateAssumeRoleRequest()
request.Scheme = "https"
request.RoleArn = constant.RoleArn
// 会话名称
request.RoleSessionName = "role-oss-sts-session"
//发起请求,并得到响应。
response, e := client.AssumeRole(request)
if e != nil {
err = e
log.Error(e.Error())
}
return map[string]interface{}{
"accessKeySecret": response.Credentials.AccessKeySecret,
"expiration": response.Credentials.Expiration,
"accessKeyId": response.Credentials.AccessKeyId,
"securityToken": response.Credentials.SecurityToken,
"bucket": constant.BuckName,
"endpoint": constant.OssEndPoint,
}, nil
}