Exemple #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)
                       ));
        }
Exemple #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
                       ));
        }
        public static ShCredential GenerateCredential(long memberId, CredentialScope scope)
        {
            var token = Guid.NewGuid().ToString();

            return(new ShCredential()
            {
                Token = token,
                AccessToken = token,
                RefreshToken = Guid.NewGuid().ToString(),
                MemberId = memberId,
                CredentialScope = scope,
                CreatedAd = DateTime.Now,
                ExpriredAd = DateTime.Now.AddDays(7),
                UpdatedAt = DateTime.Now,
                Status = CredentialStatus.Activated,
            });
        }
        public static Credential GenerateCridential(long memberId, CredentialScope credentialScope)
        {
            var token   = Guid.NewGuid().ToString();
            var timeNow = DateTime.Now;

            return(new Credential
            {
                Token = token,
                AccessToken = token,
                MemberId = memberId,
                RefreshToken = Guid.NewGuid().ToString(),
                CredentialScope = CredentialScope.Basic,
                CreatedAt = timeNow,
                UpdatedAt = timeNow,
                ExpiredAt = timeNow.AddDays(7),
                Status = CredentialStatus.Activated
            });
        }
Exemple #5
0
        public static string GetPresignedUrl(GetPresignedUrlRequest request, IAwsCredential credential, DateTime now)
        {
            var scope = new CredentialScope(now, request.Region, AwsService.S3);

            var urlBuilder = StringBuilderCache.Aquire()
                             .Append("https://")
                             .Append(request.Host)
                             .Append('/')
                             .Append(request.BucketName)
                             .Append('/')
                             .Append(request.Key);

            // TODO: support version querystring

            var message = new HttpRequestMessage(new HttpMethod(request.Method), StringBuilderCache.ExtractAndRelease(urlBuilder));

            SignerV4.Default.Presign(credential, scope, now, request.ExpiresIn, message, "UNSIGNED-PAYLOAD");

            string signedUrl = message.RequestUri.ToString();

            return(signedUrl);
        }