Esempio n. 1
0
        public void SignRequest_should_apply_signature_to_request()
        {
            var creds = new AwsCredentials
            {
                AccessKey = "ExampleKey",
                SecretKey = "wJalrXUtnFEMI/K7MDENG+bPxRfiCYEXAMPLEKEY",
                Token     = "token1",
            };

            SignV4Util.SignRequest(_sampleRequest, _sampleBody, creds, "us-east-1", "iam");

            var amzDate = _sampleRequest.Headers.XAmzDate;

            Assert.False(String.IsNullOrEmpty(amzDate));
            Trace.WriteLine("X-Amz-Date: " + amzDate);

            var auth = _sampleRequest.Headers.Authorization;

            Assert.False(String.IsNullOrEmpty(auth));
            Trace.WriteLine("Authorize: " + auth);

            var token = _sampleRequest.Headers.XAmzSecurityToken;

            Assert.False(String.IsNullOrEmpty(token));
            Trace.WriteLine("Token: " + token);
        }
        public static void SignRequest(HttpRequestMessage request, byte[] body, AwsCredentials credentials,
                                       string region, string service)
        {
            var date      = DateTime.UtcNow;
            var dateStamp = date.ToString("yyyyMMdd");
            var amzDate   = date.ToString("yyyyMMddTHHmmssZ");

            request.Headers.Add("X-Amz-Date", amzDate);

            var signingKey   = GetSigningKey(credentials.SecretKey, dateStamp, region, service);
            var stringToSign = GetStringToSign(request, body, region, service);

            Debug.Write("========== String to Sign ==========\r\n{0}\r\n========== String to Sign ==========\r\n",
                        stringToSign);
            var signature = signingKey.GetHmacSha256Hash(stringToSign).ToLowercaseHex();
            var auth      = string.Format(
                "AWS4-HMAC-SHA256 Credential={0}/{1}, SignedHeaders={2}, Signature={3}",
                credentials.AccessKey,
                GetCredentialScope(dateStamp, region, service),
                GetSignedHeaders(request),
                signature);

            Console.WriteLine(auth);

            request.Headers.TryAddWithoutValidation("Authorization", auth);
            if (!string.IsNullOrWhiteSpace(credentials.Token))
            {
                request.Headers.Add("X-Amz-Security-Token", credentials.Token);
            }
        }
Esempio n. 3
0
 public MongoAWSMechanism(
     AwsCredentials awsCredentials,
     IRandomByteGenerator randomByteGenerator,
     IClock clock)
 {
     _awsCredentials      = Ensure.IsNotNull(awsCredentials, nameof(awsCredentials));
     _randomByteGenerator = Ensure.IsNotNull(randomByteGenerator, nameof(randomByteGenerator));
     _clock = Ensure.IsNotNull(clock, nameof(clock));
 }
Esempio n. 4
0
        public static AmazonDynamoDBClient CreateClient(AppConfig appConfig)
        {
            var dynamoDbConfig = new AmazonDynamoDBConfig
            {
                RegionEndpoint = RegionEndpoint.GetBySystemName(appConfig.AwsRegion)
            };
            var awsCredentials = new AwsCredentials(appConfig);

            return(new AmazonDynamoDBClient(awsCredentials, dynamoDbConfig));
        }
Esempio n. 5
0
 public ClientFirst(
     byte[] bytesToSendToServer,
     byte[] nonce,
     AwsCredentials awsCredentials,
     IClock clock)
 {
     _bytesToSendToServer = bytesToSendToServer;
     _nonce          = nonce;
     _awsCredentials = awsCredentials;
     _clock          = clock;
 }
Esempio n. 6
0
        public void CanCastToAWSCredentials()
        {
            //Arrange
            var sut = new AwsCredentials("access", "secret", "token");

            //Act
            var convertedCreds = ((AWSCredentials)sut).GetCredentials();

            //Assert
            Assert.NotNull(convertedCreds);
            Assert.Equal("access", convertedCreds.AccessKey);
            Assert.Equal("secret", convertedCreds.SecretKey);
            Assert.Equal("token", convertedCreds.Token);
        }
        public TransactionsRecord(AwsCredentials awsCredentials)
        {
            try
            {
                var dynamoDbConfig = new AmazonDynamoDBConfig
                {
                    RegionEndpoint = RegionEndpoint.USEast1
                };

                client    = new AmazonDynamoDBClient(awsCredentials, dynamoDbConfig);
                dbContext = new DynamoDBContext(client);
            }
            catch (AmazonServiceException e) { Console.WriteLine(e.Message); }
            catch (Exception e) { Console.WriteLine(e.Message); }
        }
Esempio n. 8
0
        public void CanBeConstructed()
        {
            //Arrange
            var sut = new AwsCredentials("access", "secret", "token");

            //Act
            var hash = sut.GetHashCode();

            //Assert
            Assert.NotNull(sut);
            Assert.Equal(hash, sut.GetHashCode());
            Assert.Equal("access", sut.AccessKey);
            Assert.Equal("secret", sut.SecretKey);
            Assert.Equal("token", sut.Token);
        }
Esempio n. 9
0
 public SigningMetadata(RegionEndpoint regionEndpoint, AwsCredentials credentials, in DateTime timestamp,
Esempio n. 10
0
 public KinesisClient(AwsCredentials credentials)
     : base(AwsService.Kinesis, AwsRegion.USEast1, credentials)
 {
 }
Esempio n. 11
0
        protected override async Task <TResponse> InvokeClientRequest <TRequest, TResponse>(string actionName, TRequest request, CancellationToken cancelToken = default)
        {
            var lambdaRequest = new InvokeRequest();
            var micRequest    = new MicLambdaRequest <TRequest> {
                Attributes = request
            };

            switch (actionName)
            {
                #region Auth API
            case nameof(AuthConfirmSignup):
                micRequest.Action = "CONFIRM_SIGN_UP";
                goto case nameof(Manifest.AuthLambda);

            case nameof(AuthForgotPassword):
                micRequest.Action = "FORGOT_PASSWORD";
                goto case nameof(Manifest.AuthLambda);

            case nameof(AuthLogin):
                micRequest.Action = "LOGIN";
                AwsCredentials.RemoveLogin(Manifest.GetCognitoProviderName());
                goto case nameof(Manifest.AuthLambda);

            case nameof(AuthGiveConsent):
                micRequest.Action = "GIVE_CONSENT";
                goto case nameof(Manifest.AuthLambda);

            case nameof(AuthRefresh):
                micRequest.Action = "REFRESH";
                AwsCredentials.RemoveLogin(Manifest.GetCognitoProviderName());
                goto case nameof(Manifest.AuthLambda);

            case nameof(AuthResendConfirmationCode):
                micRequest.Action = "RESEND_CONFIRMATION_CODE";
                goto case nameof(Manifest.AuthLambda);

            case nameof(AuthSetPassword):
                micRequest.Action = "SET_PASSWORD";
                goto case nameof(Manifest.AuthLambda);

            case nameof(AuthSignup):
                micRequest.Action = "SIGN_UP";
                goto case nameof(Manifest.AuthLambda);

            case nameof(Manifest.AuthLambda):
                lambdaRequest.FunctionName = Manifest.AuthLambda;
                break;

                #endregion // Auth API
                #region User API
            case nameof(UserCreate):
                micRequest.Action = "CREATE";
                goto case nameof(Manifest.UserLambda);

            case nameof(UserResetPassword):
                micRequest.Action = "RESET_PASSWORD";
                goto case nameof(Manifest.UserLambda);

            case nameof(UserGet):
                micRequest.Action = "GET";
                goto case nameof(Manifest.UserLambda);

            case nameof(Manifest.UserLambda):
                lambdaRequest.FunctionName = Manifest.UserLambda;
                break;

                #endregion // User API
            default:
                throw new InvalidOperationException("Unknown action name: " + actionName);
            }

            lambdaRequest.Payload = JsonConvert.SerializeObject(micRequest);
            var lambdaResponse = await lambdaClient.InvokeAsync(lambdaRequest, cancelToken)
                                 .ConfigureAwait(continueOnCapturedContext: false);

            return(await DeserializeOrThrow <TResponse>(lambdaResponse,
                                                        cancelToken).ConfigureAwait(continueOnCapturedContext: false));
        }