public NonceValidator( PrivateHashEncoder privateHashEncoder, Base64Converter base64Converter, NonceTimeStampParser nonceTimeStampParser, int staleTimeOutInSeconds) { this.privateHashEncoder = privateHashEncoder; this.base64Converter = base64Converter; this.nonceTimeStampParser = nonceTimeStampParser; this.staleTimeOutInSeconds = staleTimeOutInSeconds; }
public void ShouldIndicateThatNonceIsStaleWithOldTimeStamp() { var md5Encoder = new MD5Encoder(); var base64Converter = new Base64Converter(); var privateHashEncoder = new PrivateHashEncoder(TestResources.PrivateKey, md5Encoder); var nonceTimeStampParser = new NonceTimeStampParser(); var nonceValidator = new NonceValidator(privateHashEncoder, base64Converter, nonceTimeStampParser, 600); bool result = nonceValidator.IsStale(TestResources.GeneratedValidNonce); Assert.That(result, Is.True); }
public void ShouldPositivelyValidateNonceWhenNonceIsGeneratedUsingPrivateKey() { var md5Encoder = new MD5Encoder(); var base64Converter = new Base64Converter(); var privateHashEncoder = new PrivateHashEncoder(TestResources.PrivateKey, md5Encoder); var nonceTimeStampParser = new NonceTimeStampParser(); var nonceValidator = new NonceValidator(privateHashEncoder, base64Converter, nonceTimeStampParser, 600); bool result = nonceValidator.Validate(TestResources.GeneratedValidNonce, TestResources.IpAddress); Assert.That(result, Is.True); }
public void ShouldIndicateThatNonceIsNotStale() { var md5Encoder = new MD5Encoder(); var base64Converter = new Base64Converter(); var privateHashEncoder = new PrivateHashEncoder(TestResources.PrivateKey, md5Encoder); var nonceTimeStampParser = new NonceTimeStampParser(); var nonceValidator = new NonceValidator(privateHashEncoder, base64Converter, nonceTimeStampParser, 600); var nonceGenerator = new NonceGenerator(privateHashEncoder, base64Converter); bool result = nonceValidator.IsStale(nonceGenerator.Generate(TestResources.IpAddress)); Assert.That(result, Is.False); }
public void ShouldEncodeDateTimeAndPrivateKey() { var repository = new MockRepository(); var md5Encoder = repository.StrictMock<MD5Encoder>(); using (repository.Record()) { string expectedStringToEncode = TestResources.NonceTimeStampAsString + ":" + TestResources.IpAddress + ":" + TestResources.PrivateKey; md5Encoder.Expect(encoder => encoder.Encode(expectedStringToEncode)).Return(string.Empty); } using (repository.Playback()) { var privateHashEncoder = new PrivateHashEncoder(TestResources.PrivateKey, md5Encoder); privateHashEncoder.Encode(TestResources.NonceTimeStampAsString, TestResources.IpAddress); } }
public static RequestInterceptor Create(string realm, string privateKey, MembershipProvider membershipProvider) { var base64Converter = new Base64Converter(); var privateHashEncoder = new PrivateHashEncoder(privateKey, new MD5Encoder()); var generator = new NonceGenerator(privateHashEncoder, base64Converter); var digestHeaderGenerator = new DigestHeaderFactory(generator, realm); var digestValidator = new DigestValidator(new DigestEncoders(new MD5Encoder())); var digestHeaderExtractor = new DigestHeaderExtractor(new AuthorizationStringExtractor(), new DigestHeaderParser(new HeaderKeyValueSplitter('=')), new MethodExtractor()); var nonceValidator = new NonceValidator(privateHashEncoder, base64Converter, new NonceTimeStampParser(), 600); var digestAuthenticationManager = new DigestAuthenticationManager( new ResponseMessageFactory(), new IPAddressExtractor(), membershipProvider, digestHeaderExtractor, new ServiceSecurityContextFactory(new AuthorizationPolicyFactory()), nonceValidator, digestValidator, digestHeaderGenerator); return new DigestAuthenticationInterceptor(digestAuthenticationManager); }
public void ShouldReturnNullWhenDateTimeArgumentToEncodeIsNull() { var privateHashEncoder = new PrivateHashEncoder(TestResources.PrivateKey, null); var result = privateHashEncoder.Encode(null, TestResources.IpAddress); Assert.That(result, Is.Null); }
public NonceGenerator(PrivateHashEncoder privateHashEncoder, Base64Converter base64Converter) { this.privateHashEncoder = privateHashEncoder; this.base64Converter = base64Converter; }