示例#1
0
        public static string GetPresignedUrl(GetPresignedUrlRequest request, IAwsCredential credential, DateTime now)
        {
            HttpMethod method = request.Method.Equals("GET") ? HttpMethod.Get : new HttpMethod(request.Method);

            // TODO: support version querystring

            return(SignerV4.GetPresignedUrl(
                       credential: credential,
                       scope: new CredentialScope(now, request.Region, AwsService.S3),
                       date: now,
                       expires: request.ExpiresIn,
                       method: method,
                       requestUri: new Uri(request.GetUrl()),
                       payloadHash: UnsignedPayload
                       ));
        }
示例#2
0
        protected async ValueTask SignAsync(HttpRequestMessage request)
        {
            if (credential.ShouldRenew)
            {
                await credential.RenewAsync().ConfigureAwait(false);
            }

            DateTimeOffset date = DateTimeOffset.UtcNow;

            request.Headers.Host = request.RequestUri.Host;
            request.Headers.Date = date;

            if (credential.SecurityToken != null)
            {
                request.Headers.Add("x-amz-security-token", credential.SecurityToken);
            }

            request.Headers.Add("x-amz-date", date.UtcDateTime.ToString("yyyyMMddTHHmmssZ", CultureInfo.InvariantCulture));

            SignerV4.Sign(credential, scope: GetCredentialScope(request), request: request);
        }
示例#3
0
        public async Task <AuthenticationToken> GetAuthenticationTokenAsync(GetAuthenticationTokenRequest request)
        {
            // Ensure the underlying credential is renewed
            if (credential.ShouldRenew)
            {
                await credential.RenewAsync().ConfigureAwait(false);
            }

            var date = DateTime.UtcNow;

            var scope = new CredentialScope(date, region, AwsService.RdsDb);


            Uri requestUri = new Uri($"https://{request.HostName}:{request.Port}?Action=connect&DBUser={request.UserName}");

            Uri url = new Uri(SignerV4.GetPresignedUrl(credential, scope, date, request.Expires, HttpMethod.Get, requestUri));

            return(new AuthenticationToken(
                       value: url.Host + ":" + url.Port.ToString() + "/" + url.Query,
                       issued: date,
                       expires: date + request.Expires
                       ));
        }
示例#4
0
        public void Serialize2()
        {
            var request = new ChangeResourceRecordSetsRequest(new[]
            {
                new ResourceRecordSetChange
                {
                    Action = ChangeAction.CREATE,

                    ResourceRecordSet = new ResourceRecordSet
                    {
                        Failover = Failover.SECONDARY,
                        TTL      = 600,
                        Type     = ResourceRecordType.NS
                    }
                }
            }
                                                              );

            byte[] bytes = Route53Serializer <ChangeResourceRecordSetsRequest> .SerializeToUtf8Bytes(request);

            Assert.Equal("9d0d340e8a3623f88f2d9731e37f6f66f43073fb841ffc32a63ddbc237012266", SignerV4.ComputeSHA256(new ByteArrayContent(bytes)));

            Assert.Equal(@"<?xml version=""1.0"" encoding=""utf-8""?>
<ChangeResourceRecordSetsRequest xmlns=""https://route53.amazonaws.com/doc/2013-04-01/"">
  <ChangeBatch>
    <Changes>
      <Change>
        <Action>CREATE</Action>
        <ResourceRecordSet>
          <Failover>SECONDARY</Failover>
          <TTL>600</TTL>
          <Type>NS</Type>
        </ResourceRecordSet>
      </Change>
    </Changes>
  </ChangeBatch>
</ChangeResourceRecordSetsRequest>", Encoding.UTF8.GetString(bytes));
        }