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-Authentictication Plugin for scheb/2fa
License MIT
Informations about the package 2fa-webauthn
Webauthn Two-Factor-Authentictication 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.
Feautures
- 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 6
- PHP 8.1 or later
- webauthn/webauthn-lib 4.0 or later
If you want to use symfony 5.* and PHP 7.4, use the version 1.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.php
instead.
Setup and Usage
After following the Installation steps, do the follwing steps to setup the library:
-
Add
Jbtronics\TFAWebauthn\Model\TwoFactorInterface
interface 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
src/Resources/assets/tfa_webauthn.js
to 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/2fa
bundle 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.twig
to your project and customize it to your needs. Configure thetemplate
setting 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\TwoFactorKeyInterface
interface of your U2FKey entity withJbtronics\TFAWebauthn\Model\LegacyU2FKeyInterface
and remove the fromRegistrationData() function (as we do not need it anymore). - Replace the
R\U2FTwoFactorBundle\Model\U2F\TwoFactorInterface
interface 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
U2FAppID
option. But this should normally not be needed - Remove the old routes, templates and settings of the
r/u2f-two-factor-bundle
and 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 ^4.7
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