public function authenticate(TokenInterface $token) { $user = $this->userProvider->loadUserByUsername($token->getUsername()); if ($user && $this->validateDigest($token->getAttribute('digest'), $token->getAttribute('nonce'), $token->getAttribute('created'), $this->getSecret($user), $this->getSalt($user))) { $authenticatedToken = new Token($user->getRoles()); $authenticatedToken->setUser($user); $authenticatedToken->setAuthenticated(true); return $authenticatedToken; } throw new AuthenticationException('WSSE authentication failed.'); }
/** * @test * @depends validateDigestWithNonceDirExpectedException * @depends validateDigestWithNonceDir * @depends validateDigestWithoutNonceDir * @depends validateDigestExpireTime */ public function authenticate() { $this->user->expects($this->once())->method('getPassword')->will($this->returnValue('somesecret')); $this->user->expects($this->once())->method('getSalt')->will($this->returnValue('somesalt')); $this->user->expects($this->once())->method('getRoles')->will($this->returnValue(array())); $this->userProvider->expects($this->once())->method('loadUserByUsername')->will($this->returnValue($this->user)); $expected = new Token(); $expected->setUser($this->user); $expected->setAuthenticated(true); $time = date(DATE_ISO8601); $encoder = new MessageDigestPasswordEncoder('sha1', true, 1); $digest = $encoder->encodePassword(sprintf('%s%s%s', 'somenonce', $time, 'somesecret'), 'somesalt'); $token = new Token(); $token->setAttribute('digest', $digest); $token->setAttribute('nonce', base64_encode('somenonce')); $token->setAttribute('created', $time); $provider = new CustomProvider($this->userProvider, $this->encoder, $this->nonceCache); $result = $provider->authenticate($token); $this->assertEquals($expected, $result); }