public void Should_Generate_Response_Header_Based_On_Given_IPAddress() { var repository = new MockRepository(); var nonceGenerator = repository.StrictMock<NonceGenerator>(null, null); using (repository.Record()) { nonceGenerator.Expect(generator => generator.Generate(TestResources.IpAddress)).Return(TestResources.GeneratedValidNonce); } var digestHeaderGenerator = new DigestHeaderFactory(nonceGenerator, TestResources.Realm); using (repository.Playback()) { DigestHeader digestHeader = digestHeaderGenerator.Generate(TestResources.IpAddress); Assert.That(digestHeader.Realm, Is.EqualTo(TestResources.Realm)); Assert.That(digestHeader.Nonce, Is.EqualTo(TestResources.GeneratedValidNonce)); } repository.VerifyAll(); }
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); }