Download the PHP package jbtronics/2fa-webauthn without Composer
On this page you can find all versions of the php package jbtronics/2fa-webauthn. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download jbtronics/2fa-webauthn
More information about jbtronics/2fa-webauthn
Files in jbtronics/2fa-webauthn
Package 2fa-webauthn
Short Description Webauthn Two-Factor-Authentication Plugin for scheb/2fa
License MIT
Informations about the package 2fa-webauthn
Webauthn Two-Factor-Authentication Plugin for scheb/2fa
This repository contains a plugin for scheb/2fa that adds support for Webauthn authenticators (like a Yubikey) as a second factor.
Features
- Support of all webauthn authenticators as second factor
- Supports multiple authenticators per user
- Backward compatibility for existing registered U2F keys (from r/u2f-two-factor-bundle)
Requirements
- Symfony 7
- PHP 8.2 or later
- webauthn/webauthn-lib 5.0 or later
If you want to use symfony 5. and PHP 7.4, use the version 1.0.0 of this bundle. If you want to use PHP 8.1 and webauthn/webauthn-lib 4., use the version 2.0.0 of this bundle.
Installation
- Install the bundle
composer require jbtronics/2fa-webauthn - Enable the bundle in your
config/bundles.php(normally done by Symfony flex automatically) - If you want to use the easy doctrine integration, add the web-authn symfony bundle:
composer require web-auth/webauthn-symfony-bundle. You do not need to run the community recipe, as we just use the doctrine type definitons from the bundle. AddWebauthn\Bundle\WebauthnBundle::class => ['all' => true],to yourconfig/bundles.phpinstead.
Setup and Usage
After following the Installation steps, do the follwing steps to setup the library:
-
Add
Jbtronics\TFAWebauthn\Model\TwoFactorInterfaceinterface to your user entity: -
Create a new entity for the webauthn keys. For simplicity we use the templates from the web-auth/webauthn-symfony-bundle (see here for more infos)
-
Include javascript frontend code into your project: For webauthn we need some javascript code to interact with the authenticators. Copy the file from
assets/tfa_webauthn.jsto your project and include it either by loading it via a<script>tag or by including it in your webpack using.addEntry(). -
Add configuration file
config/packages/jbtronics_2fa_webauthn.yaml: - Customize the login template: Similar to the base login template of the
scheb/2fabundle you will most likely need to override the login template of this bundle to integrate it into your design. Copy the template fromResources/views/Authentication/form.html.twigto your project and customize it to your needs. Configure thetemplatesetting in the bundle config to your new path.
Registration of new keys
In principle the login with exsting keys should work now, but you will most likely need some possibility to register new keys. To make this easy there is the Jbtronics\TFAWebauthn\Services\TFAWebauthnRegistrationHelper service to help you with this:
-
Create a new controller, which will handle the registration, which should looks like this:
- Create a template with a form, which will be used to register the new key. The form should look like this:
The data-webauthn-tfa-action attribute marks the form as webauthn registration form and is handled by the frontend code included above.
If the form is submitted, the frontend code will catch that and start a registration process. The response is put it into the hidden input field with the id _auth_code and sent to our controller for parsing.
Migrate from r/u2f-two-factor-bundle
- Replace the
R\U2FTwoFactorBundle\Model\U2F\TwoFactorKeyInterfaceinterface of your U2FKey entity withJbtronics\TFAWebauthn\Model\LegacyU2FKeyInterfaceand remove the fromRegistrationData() function (as we do not need it anymore). - Replace the
R\U2FTwoFactorBundle\Model\U2F\TwoFactorInterfaceinterface of your user withJbtronics\TFAWebauthn\Model\TwoFactorInterface, configure it (see above) and replace/rename yourgetU2FKeys()function togetLegacyU2FKeys(). - (Optional:) If your appID is not the same as your domain, configure it with the
U2FAppIDoption. But this should normally not be needed - Remove the old routes, templates and settings of the
r/u2f-two-factor-bundleand remove it from your application - Follow the setup steps above
License
This bundle is licensed under the MIT license. See LICENSE for details.
Credits
- Webauthn support is provided by spomky-labs webauthn-framework
- This library is inspired by the r/u2f-two-factor-bundle bundle
All versions of 2fa-webauthn with dependencies
ext-json Version *
symfony/framework-bundle Version ^6.0|^7.0
scheb/2fa-bundle Version ^6.0.0|^7.0.0
web-auth/webauthn-lib Version ^5.2
psr/log Version ^3.0.0|^2.0.0
symfony/psr-http-message-bridge Version ^2.1|^6.1|^7.0
nyholm/psr7 Version ^1.5
symfony/uid Version ^6.0|^7.0