lingling
2025-03-17 a6325d1a9bd8d5a9b9c6424b3cb6d0c898309d30
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
54
55
56
57
58
59
60
61
62
using Aliyun.Acs.Core;
using Aliyun.Acs.Core.Auth.Sts;
using Aliyun.Acs.Core.Http;
using Aliyun.Acs.Core.Profile;
using LifePayment.Domain.Shared;
 
namespace LifePayment.Application
{
    public class OssSTSHelper
    {
        private const int TokenExpireTime = 3600;
        private const string RoleSessionName = "SessionTest";
        private const string PolicyFile = @"{
    ""Version"": ""1"",
    ""Statement"": [
        {
            ""Effect"": ""Allow"",
            ""Action"": ""oss:PutObject"",
            ""Resource"": [
                ""acs:oss:*:*:waterdroptest2/*"",
                ""acs:oss:*:*:parkmanagement/*"",
                ""acs:oss:*:*:jurenlian/*""
            ]
        }
    ]
}";
 
        private readonly OssSettings ossSettings;
 
        public OssSTSHelper(OssSettings ossSettings)
        {
            this.ossSettings = ossSettings;
        }
 
        public OssSTSReponse GetOssSTS()
        {
            string regionId = "cn-hangzhou";
 
            IClientProfile profile = DefaultProfile.GetProfile(regionId, ossSettings.OssAccessKeyId, ossSettings.OssAccessSecret);
            DefaultAcsClient client = new DefaultAcsClient(profile);
            AssumeRoleRequest request = new AssumeRoleRequest();
 
            request.Method = MethodType.POST;
 
            request.RoleArn = ossSettings.OssRoleRan;
            request.RoleSessionName = RoleSessionName;
            request.Policy = PolicyFile;
            request.DurationSeconds = TokenExpireTime;
            AssumeRoleResponse response = client.GetAcsResponse(request);
            OssSTSReponse result = new OssSTSReponse()
            {
                Expiration = response.Credentials.Expiration,
                OssAccessKeyId = response.Credentials.AccessKeyId,
                OssAccessSecret = response.Credentials.AccessKeySecret,
                SecurityToken = response.Credentials.SecurityToken,
                RequestId = response.RequestId
            };
            return result;
        }
 
    }
}