public AuthenticationToken GenerateAuthenticationToken(GetAuthenticationTokenRequest request) { // TODO: Ensure the underlying AWS credential does not need renewed also var date = DateTime.UtcNow; var scope = new CredentialScope(date, AwsRegion.USEast1, AwsService.RdsDb); // TODO: Avoid this allocation by extending presign... var httpRequest = new HttpRequestMessage( HttpMethod.Get, $"https://{request.HostName}:{request.Port}?Action=connect&DBUser={request.UserName}" ); SignerV4.Default.Presign(credential, scope, date, TimeSpan.FromMinutes(15), httpRequest); var url = httpRequest.RequestUri; return(new AuthenticationToken( value: url.Host + ":" + url.Port.ToString() + "/" + url.Query, issued: date, expires: date.AddMinutes(15) )); }
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); var httpRequest = new HttpRequestMessage( HttpMethod.Get, $"https://{request.HostName}:{request.Port}?Action=connect&DBUser={request.UserName}" ); SignerV4.Default.Presign(credential, scope, date, request.Expires, httpRequest); Uri url = httpRequest.RequestUri; return(new AuthenticationToken( value: url.Host + ":" + url.Port.ToString() + "/" + url.Query, issued: date, expires: date + request.Expires )); }
public AuthenticationToken GetAuthenticationToken(GetAuthenticationTokenRequest request) { return(GetAuthenticationTokenAsync(request).GetAwaiter().GetResult()); }