protected override void Arrange()
            {
                _apiClientIdentity = new ApiClientIdentity
                {
                    Key = "MyKey"
                };

                var apiClientIdentityProvider = mocks.Stub <IApiClientIdentityProvider>();

                apiClientIdentityProvider.Stub(x => x.GetApiClientIdentity("MyKey"))
                .Return(_apiClientIdentity);

                var apiClientSecret = new ApiClientSecret
                {
                    Secret = "MySecret"
                };

                var apiClientSecretProvider = mocks.Stub <IApiClientSecretProvider>();

                apiClientSecretProvider.Expect(x => x.GetSecret("MyKey"))
                .Return(apiClientSecret);

                var secretVerifier = mocks.Stub <ISecretVerifier>();

                secretVerifier.Expect(x => x.VerifySecret("MyKey", "MySecret", apiClientSecret))
                .Return(true);

                _apiClientAuthenticator = new ApiClientAuthenticator(apiClientIdentityProvider, apiClientSecretProvider, secretVerifier);
            }
            protected override void Arrange()
            {
                _apiClientIdentity = new ApiClientIdentity
                {
                    Key = "MyKey"
                };

                var apiClientIdentityProvider = Stub <IApiClientIdentityProvider>();

                A.CallTo(() => apiClientIdentityProvider.GetApiClientIdentity("MyKey"))
                .Returns(_apiClientIdentity);

                var apiClientSecret = new ApiClientSecret
                {
                    Secret = "MySecret"
                };

                var apiClientSecretProvider = Stub <IApiClientSecretProvider>();

                A.CallTo(() => apiClientSecretProvider.GetSecret("MyKey"))
                .Returns(apiClientSecret);

                var secretVerifier = Stub <ISecretVerifier>();

                A.CallTo(() => secretVerifier.VerifySecret("MyKey", "MySecret", apiClientSecret))
                .Returns(true);

                _apiClientAuthenticator = new ApiClientAuthenticator(apiClientIdentityProvider, apiClientSecretProvider, secretVerifier);
            }
Exemplo n.º 3
0
        public void SetSecret(string key, ApiClientSecret secret)
        {
            var client = GetClient(key);

            client.Secret         = secret.Secret;
            client.SecretIsHashed = secret.IsHashed;
            _clientAppRepo.UpdateClient(client);
        }
            protected override void Arrange()
            {
                var packedHashConverter = new PackedHashConverter();

                var originalHashAlgorithm = 1495316179;

                var packedHash = new PackedHash
                {
                    Format        = 0,
                    HashAlgorithm = originalHashAlgorithm,
                    HashBytes     = new byte[]
                    {
                        246, 198, 84, 57, 46, 87, 69, 64, 36, 89, 195, 42, 154,
                        103, 212, 113, 134, 129, 0, 29, 59, 36, 38, 212, 67, 32,
                        67, 113, 96, 103, 22, 129
                    },
                    Iterations = 100,
                    Salt       = new byte[] { 5, 8, 4, 2, 3, 6, 12, 34 }
                };

                _configProvider = new DefaultHashConfigurationProvider();

                _apiClientSecret = new ApiClientSecret
                {
                    IsHashed = true,

                    // GetHashCode is consistent
                    Secret = "ANO2IFlkAAAACAAAAAUIBAIDBgwi9sZUOS5XRUAkWcMqmmfUcYaBAB07JCbUQyBDcWBnFoE="
                };

                _apiClientSecretProvider = Stub <IApiClientSecretProvider>();

                var secureHasher   = new Pbkdf2HmacSha1SecureHasher();
                var originalHasher = A.Fake <ISecureHasher>();

                A.CallTo(() => originalHasher.AlgorithmHashCode).Returns(originalHashAlgorithm);
                A.CallTo(() => originalHasher.ComputeHash(A <string> ._, A <int> ._, A <int> ._, A <byte[]> ._)).Returns(packedHash);

                var next = new SecureHashAwareSecretVerifier(
                    packedHashConverter, new SecureHasherProvider(
                        new List <ISecureHasher>
                {
                    secureHasher,
                    originalHasher
                }));

                _securePackedHashProvider = Stub <ISecurePackedHashProvider>();

                _autoUpgradingHashedSecretVerifierDecorator = new AutoUpgradingHashedSecretVerifierDecorator(
                    _apiClientSecretProvider, next, packedHashConverter, _securePackedHashProvider, _configProvider);
            }
            protected override void Arrange()
            {
                _apiClientSecret = new ApiClientSecret();

                _apiClientSecretProvider = Stub <IApiClientSecretProvider>();

                var next = Stub <ISecretVerifier>();

                A.CallTo(() => next.VerifySecret(Key, Secret, _apiClientSecret))
                .Returns(false);

                var packedHashConverter = Stub <IPackedHashConverter>();

                A.CallTo(() => packedHashConverter.GetPackedHash(Secret))
                .Returns(
                    new PackedHash
                {
                    Format = 0, HashAlgorithm = HashHelper.GetSha256Hash(Algorithm).ToInt32(), HashBytes = new byte[]
                    {
                        1, 5, 3
                    },
                    Salt = new byte[]
                    {
                        6, 5, 8, 94, 34
                    },
                    Iterations = 321
                });

                var securePackedHashProvider = Stub <ISecurePackedHashProvider>();

                A.CallTo(() => securePackedHashProvider.ComputePackedHashString(Secret, 123, 321, 12))
                .Returns("");

                var configProvider = Stub <IHashConfigurationProvider>();

                A.CallTo(() => configProvider.GetHashConfiguration())
                .Returns(
                    new HashConfiguration
                {
                    Algorithm = Algorithm, Iterations = 321, SaltSize = 5
                });

                _autoUpgradingHashedSecretVerifierDecorator = new AutoUpgradingHashedSecretVerifierDecorator(
                    _apiClientSecretProvider,
                    next,
                    packedHashConverter,
                    securePackedHashProvider,
                    configProvider);
            }
Exemplo n.º 6
0
            protected override void Arrange()
            {
                _apiClientSecret = new ApiClientSecret
                {
                    IsHashed = true, Secret = Secret
                };

                _apiClientSecretProvider = Stub <IApiClientSecretProvider>();

                var next = Stub <ISecretVerifier>();

                next.Stub(x => x.VerifySecret(Key, Secret, _apiClientSecret))
                .Return(true);

                var packedHashConverter = Stub <IPackedHashConverter>();

                packedHashConverter.Stub(x => x.GetPackedHash(Secret))
                .Return(
                    new PackedHash
                {
                    Format = 0, HashAlgorithm = HashHelper.GetSha256Hash(Algorithm).ToInt32(), HashBytes = new byte[]
                    {
                        1, 5, 3
                    },
                    Salt = new byte[]
                    {
                        6, 5, 8, 94, 34
                    },
                    Iterations = 321
                });

                var configProvider = Stub <IHashConfigurationProvider>();

                configProvider.Stub(x => x.GetHashConfiguration())
                .Return(
                    new HashConfiguration
                {
                    Algorithm = Algorithm, Iterations = 321, SaltSize = 40
                });

                _autoUpgradingHashedSecretVerifierDecorator =
                    new AutoUpgradingHashedSecretVerifierDecorator(
                        _apiClientSecretProvider, next, packedHashConverter, null, configProvider);
            }
Exemplo n.º 7
0
            protected override void Arrange()
            {
                var apiClient = new ApiClient {
                    ApiClientId = 0
                };

                _accessTokenClientRepo  = A.Fake <IAccessTokenClientRepo>();
                _apiClientAuthenticator = A.Fake <IApiClientAuthenticator>();

                A.CallTo(() => _accessTokenClientRepo.AddClientAccessToken(A <int> ._, A <string> ._))
                .Returns(new ClientAccessToken {
                    ApiClient = new ApiClient()
                });

                _tokenRequest = new TokenRequest
                {
                    Client_id     = ClientId,
                    Client_secret = ClientSecret,
                    Grant_type    = "client_credentials"
                };

                var clientSecret = new ApiClientSecret
                {
                    IsHashed = true,
                    Secret   = ClientSecret
                };

                A.CallTo(() => _apiClientAuthenticator.TryAuthenticateAsync(A <string> ._, A <string> ._))
                .Returns(
                    Task.FromResult <ApiClientAuthenticator.AuthenticationResult>(
                        new ApiClientAuthenticator.AuthenticationResult
                {
                    IsAuthenticated   = true,
                    ApiClientIdentity = new ApiClientIdentity
                    {
                        Key = ClientId,
                        EducationOrganizationIds = new List <int>()
                        {
                            997, 998, 999
                        }
                    }
                }));
            }
Exemplo n.º 8
0
            protected override void Arrange()
            {
                var packedHashConverter = new PackedHashConverter();

                var packedHash = new PackedHash
                {
                    Format        = 0,
                    HashAlgorithm = "GOOD".GetHashCode(), // simulation of a hash routine that used GetHashCode
                    HashBytes     = new byte[]
                    {
                        246, 198, 84, 57, 46, 87, 69, 64, 36, 89, 195, 42, 154,
                        103, 212, 113, 134, 129, 0, 29, 59, 36, 38, 212, 67, 32,
                        67, 113, 96, 103, 22, 129
                    },
                    Iterations = 100,
                    Salt       = new byte[] { 5, 8, 4, 2, 3, 6, 12, 34 }
                };

                _configProvider = new DefaultHashConfigurationProvider();

                _apiClientSecret = new ApiClientSecret
                {
                    IsHashed = true,

                    // GetHashCode is consistent
                    Secret = "ANO2IFlkAAAACAAAAAUIBAIDBgwi9sZUOS5XRUAkWcMqmmfUcYaBAB07JCbUQyBDcWBnFoE="
                };

                _apiClientSecretProvider = Stub <IApiClientSecretProvider>();

                var secureHasher = new Pbkdf2HmacSha1SecureHasher(null);
                var next         = new SecureHashAwareSecretVerifier(packedHashConverter, secureHasher);

                _securePackedHashProvider = Stub <ISecurePackedHashProvider>();

                _autoUpgradingHashedSecretVerifierDecorator = new AutoUpgradingHashedSecretVerifierDecorator(
                    _apiClientSecretProvider, next, packedHashConverter, _securePackedHashProvider, _configProvider);
            }
            protected override void Arrange()
            {
                _apiClientSecret         = new ApiClientSecret();
                _apiClientSecretProvider = Stub <IApiClientSecretProvider>();

                var next = Stub <ISecretVerifier>();

                A.CallTo(() => next.VerifySecret(Key, Secret, _apiClientSecret))
                .Returns(true);

                var packedHashConverter = Stub <IPackedHashConverter>();

                A.CallTo(() => packedHashConverter.GetPackedHash(Secret))
                .Throws(new FormatException());

                var securePackedHashProvider = Stub <ISecurePackedHashProvider>();

                A.CallTo(() => securePackedHashProvider.ComputePackedHashString(Secret, 123, 321, 12))
                .Returns("");

                var configProvider = Stub <IHashConfigurationProvider>();

                A.CallTo(() => configProvider.GetHashConfiguration())
                .Returns(
                    new HashConfiguration
                {
                    Algorithm = Algorithm, Iterations = 321, SaltSize = 5
                });

                _autoUpgradingHashedSecretVerifierDecorator = new AutoUpgradingHashedSecretVerifierDecorator(
                    _apiClientSecretProvider,
                    next,
                    packedHashConverter,
                    securePackedHashProvider,
                    configProvider);
            }
Exemplo n.º 10
0
 protected override void Act()
 {
     _actualApiClientSecret = _apiClientSecretProvider.GetSecret(_testClient.Key);
 }