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 )); }
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); }
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 )); }
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)); }