示例#1
0
        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)
                       ));
        }
示例#2
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);

            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
                       ));
        }
示例#3
0
 public AuthenticationToken GetAuthenticationToken(GetAuthenticationTokenRequest request)
 {
     return(GetAuthenticationTokenAsync(request).GetAwaiter().GetResult());
 }