protected override void Arrange() { _transaction = new TransactionScope(); var configValueProviderStub = Stub <IConfigValueProvider>(); var usersContextFactory = A.Fake <IUsersContextFactory>(); A.CallTo(() => usersContextFactory.CreateContext()) .Returns(new SqlServerUsersContext()); var clientAppRepo = new ClientAppRepo(usersContextFactory, configValueProviderStub); _testClient = new ApiClient(true) { Name = $"ClientAppRepoTest{Guid.NewGuid():N}", Secret = "MySecret" }; using (var context = new SqlServerUsersContext()) { context.Clients.Add(_testClient); context.SaveChanges(); } _apiClientSecretProvider = new EdFiAdminApiClientIdentityProvider(clientAppRepo); }
protected override void Arrange() { _transaction = new TransactionScope(); var config = new ConfigurationBuilder() .SetBasePath(TestContext.CurrentContext.TestDirectory) .AddJsonFile("appsettings.json", optional: true) .AddEnvironmentVariables() .Build(); var connectionStringProvider = new ConfigConnectionStringsProvider(config); string connectionstring = connectionStringProvider.GetConnectionString("EdFi_Admin"); var usersContextFactory = A.Fake <IUsersContextFactory>(); A.CallTo(() => usersContextFactory.CreateContext()) .Returns(new SqlServerUsersContext(connectionstring)); var clientAppRepo = new ClientAppRepo(usersContextFactory, config); _testClient = new ApiClient(true) { Name = $"ClientAppRepoTest{Guid.NewGuid():N}", Secret = "MySecret" }; using (var context = new SqlServerUsersContext(connectionstring)) { context.Clients.Add(_testClient); context.SaveChanges(); } _apiClientSecretProvider = new EdFiAdminApiClientIdentityProvider(clientAppRepo); }
public ApiClientAuthenticator( IApiClientIdentityProvider apiClientIdentityProvider, IApiClientSecretProvider apiClientSecretProvider, ISecretVerifier secretVerifier) { _apiClientIdentityProvider = apiClientIdentityProvider; _apiClientSecretProvider = apiClientSecretProvider; _secretVerifier = secretVerifier; }
public AutoUpgradingHashedSecretVerifierDecorator( IApiClientSecretProvider apiClientSecretProvider, ISecretVerifier next, IPackedHashConverter packedHashConverter, ISecurePackedHashProvider securePackedHashProvider, IHashConfigurationProvider hashConfigurationProvider) { _apiClientSecretProvider = apiClientSecretProvider; _next = next; _packedHashConverter = packedHashConverter; _securePackedHashProvider = securePackedHashProvider; _hashConfiguration = hashConfigurationProvider.GetHashConfiguration(); }
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() { _transaction = new TransactionScope(); var configValueProviderStub = Stub <IConfigValueProvider>(); var usersContextFactory = A.Fake <IUsersContextFactory>(); A.CallTo(() => usersContextFactory.CreateContext()) .Returns(new SqlServerUsersContext()); var clientAppRepo = new ClientAppRepo(usersContextFactory, configValueProviderStub); _apiClientSecretProvider = new EdFiAdminApiClientIdentityProvider(clientAppRepo); }
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); }
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); }
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); }