public static AssumeRoleResponse Unmarshall(UnmarshallerContext context)
        {
            AssumeRoleResponse assumeRoleResponse = new AssumeRoleResponse();

            assumeRoleResponse.HttpResponse = context.HttpResponse;
            assumeRoleResponse.RequestId = context.StringValue("AssumeRole.RequestId");

            AssumeRoleResponse.Credentials_ credentials = new AssumeRoleResponse.Credentials_();
            credentials.SecurityToken = context.StringValue("AssumeRole.Credentials.SecurityToken");
            credentials.AccessKeySecret = context.StringValue("AssumeRole.Credentials.AccessKeySecret");
            credentials.AccessKeyId = context.StringValue("AssumeRole.Credentials.AccessKeyId");
            credentials.Expiration = context.StringValue("AssumeRole.Credentials.Expiration");
            assumeRoleResponse.Credentials = credentials;

            AssumeRoleResponse.AssumedRoleUser_ assumedRoleUser = new AssumeRoleResponse.AssumedRoleUser_();
            assumedRoleUser.Arn = context.StringValue("AssumeRole.AssumedRoleUser.Arn");
            assumedRoleUser.AssumedRoleId = context.StringValue("AssumeRole.AssumedRoleUser.AssumedRoleId");
            assumeRoleResponse.AssumedRoleUser = assumedRoleUser;

            return assumeRoleResponse;
        }
Ejemplo n.º 2
0
        public static AssumeRoleResponse.Credentials_ GetSecurityToken()
        {
            if (credentials!=null&&(DateTime.Now-_timeStamp).Seconds<30)
            {
                //防止请求过于频繁,设置5分钟请求一次。
                return credentials;
            }
            // 构建一个 Aliyun Client, 用于发起请求
            // 构建Aliyun Client时需要设置AccessKeyId和AccessKeySevcret
            // STS是Global Service, API入口位于杭州, 这里Region填写"cn-hangzhou"
            IClientProfile profile = DefaultProfile.GetProfile("cn-hangzhou", accessKeyId, accessKeySecret);
            var client = new DefaultAcsClient(profile);

            // 构造AssumeRole请求
            var request = new AssumeRoleRequest();
            // 指定角色Arn
            request.RoleArn = "acs:ram::1724377057077130:role/myfirstrole";
            request.RoleSessionName = "alice";
            // 可以设置Token有效期,可选参数,默认3600秒;
            request.DurationSeconds = 3600;
            // 可以设置Token的附加Policy,可以在获取Token时,通过额外设置一个Policy进一步减小Token的权限;
            // request.Policy="<policy-content>"
            try
            {
                AssumeRoleResponse response = client.GetAcsResponse(request);
                //Console.WriteLine("AccessKeyId: " + response.Credentials.AccessKeyId);
                //Console.WriteLine("AccessKeySecret: " + response.Credentials.AccessKeySecret);
                //Console.WriteLine("SecurityToken: " + response.Credentials.SecurityToken);
                ////Token过期时间;服务器返回UTC时间,这里转换成北京时间显示;
                //Console.WriteLine("Expiration: " + DateTime.Parse(response.Credentials.Expiration).ToLocalTime());
                credentials = response.Credentials;
                _timeStamp = DateTime.Now;
                return credentials;
            }
            catch (Exception ex)
            {
                return null;
                //记录错误日志
            }
        }