On Github Tom32i / talk-two-factor
✌️ Two-Factor Authentication
in SymfonyAnonymousToken,UsernamePasswordToken,RememberMeToken
Are the username and password valid? Does the given cookie exists is session? ...
✨ Where the magic operate ✨
Define configuration for security.yml!
Extends UsernamePasswordToken and adds a OneTimePassword attribute.
class UsernamePasswordOTPToken extends UsernamePasswordToken {
    /**
     * @var string
     */
    private $oneTimePassword;
    /**
     * {@inheritdoc}
     */
    public function __construct($user, $credentials, $oneTimePassword, $providerKey, array $roles = array())
    {
        parent::__construct($user, $credentials, $providerKey, $roles);
        $this->oneTimePassword = $oneTimePassword;
    }
}
                    SimpleForm, Guard or full custom provider
// Check that the user exists.
try {
    $user = $userProvider->loadUserByUsername($token->getUsername());
} catch (UsernameNotFoundException $e) {
    throw new BadCredentialsException('User not found.');
}
// Check that the provided password is valid.
if (!$this->encoder->isPasswordValid($user, $token->getCredentials())) {
    throw new BadCredentialsException('The presented password is invalid.');
}
$oneTimePassword = $token->getOneTimePassword();
// Check that the provided one-time-password is valid.
if (!$this->yubico->isValid($oneTimePassword)) {
    throw new BadCredentialsException('Invalid OTP.');
}
// Check that the provided one-time-password belongs to the user.
if ($this->getYubikey($user) !== $this->yubico->getIdentity($oneTimePassword)) {
    throw new BadCredentialsException('Yubico identities mismatch.');
}
// Everything's in order, move along.
return new UsernamePasswordOTPToken(
    $user,
    $user->getPassword(),
    $oneTimePassword,
    $providerKey,
    $user->getRoles()
);
                    Protect sensitive part of your apps with mandatory Two-Factor Auth
is_granted('IS_AUTHENTICATED_TWO_FACTOR')
                    Ask for a OTP for a form to be valid(just like UserPassword constraint)
Documentation
Symfony Security Custom Authentication Provider Simple Form Authenticator Yubico librairiesQuestions and feedback?
@Tom32i