mirror of
https://github.com/Part-DB/Part-DB-server.git
synced 2025-06-21 01:25:55 +02:00
Reenable r/u2f-two-factor-bundle
This commit is contained in:
parent
600119276c
commit
754926d4c8
10 changed files with 218 additions and 17 deletions
|
@ -69,7 +69,8 @@
|
||||||
"twig/inky-extra": "^3.0",
|
"twig/inky-extra": "^3.0",
|
||||||
"twig/intl-extra": "^3.0",
|
"twig/intl-extra": "^3.0",
|
||||||
"twig/markdown-extra": "^3.0",
|
"twig/markdown-extra": "^3.0",
|
||||||
"webmozart/assert": "^1.4"
|
"webmozart/assert": "^1.4",
|
||||||
|
"r/u2f-two-factor-bundle": "dev-scheb/2fa-support"
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"dama/doctrine-test-bundle": "^7.0",
|
"dama/doctrine-test-bundle": "^7.0",
|
||||||
|
@ -141,5 +142,11 @@
|
||||||
"allow-contrib": false,
|
"allow-contrib": false,
|
||||||
"require": "5.4.*"
|
"require": "5.4.*"
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
|
"repositories": [
|
||||||
|
{
|
||||||
|
"type": "vcs",
|
||||||
|
"url": "https://github.com/jbtronics/u2f-two-factor-bundle.git"
|
||||||
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
|
|
179
composer.lock
generated
179
composer.lock
generated
|
@ -4,7 +4,7 @@
|
||||||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||||
"This file is @generated automatically"
|
"This file is @generated automatically"
|
||||||
],
|
],
|
||||||
"content-hash": "5c3b75839d72914eca2152da433507d8",
|
"content-hash": "186080614c26d1b307fd99823f281e22",
|
||||||
"packages": [
|
"packages": [
|
||||||
{
|
{
|
||||||
"name": "beberlei/assert",
|
"name": "beberlei/assert",
|
||||||
|
@ -4760,6 +4760,72 @@
|
||||||
},
|
},
|
||||||
"time": "2017-10-23T01:57:42+00:00"
|
"time": "2017-10-23T01:57:42+00:00"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "r/u2f-two-factor-bundle",
|
||||||
|
"version": "dev-scheb/2fa-support",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/jbtronics/u2f-two-factor-bundle.git",
|
||||||
|
"reference": "3ba2d95de56a8ded97c841bbfac159f4350dbfdf"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/jbtronics/u2f-two-factor-bundle/zipball/3ba2d95de56a8ded97c841bbfac159f4350dbfdf",
|
||||||
|
"reference": "3ba2d95de56a8ded97c841bbfac159f4350dbfdf",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"doctrine/collections": "^1.6",
|
||||||
|
"doctrine/common": "*",
|
||||||
|
"ext-json": "*",
|
||||||
|
"php": "^7.1.3|^8.0",
|
||||||
|
"scheb/2fa-bundle": "^5.0.0|^6.0.0",
|
||||||
|
"symfony/event-dispatcher-contracts": "^2.0",
|
||||||
|
"symfony/framework-bundle": "^5.0|^6.0",
|
||||||
|
"symfony/templating": "^5.0|^6.0",
|
||||||
|
"yubico/u2flib-server": "^1.0.0"
|
||||||
|
},
|
||||||
|
"conflict": {
|
||||||
|
"godzillante/u2f-two-factor-bundle": "*",
|
||||||
|
"tubssz/u2f-two-factor-bundle": "*"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"phpstan/phpstan": "^1.8.2"
|
||||||
|
},
|
||||||
|
"type": "symfony-bundle",
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"R\\U2FTwoFactorBundle\\": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"license": [
|
||||||
|
"MIT"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Nils Uliczka",
|
||||||
|
"email": "nils.uliczka@darookee.net"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Francesco De Francesco",
|
||||||
|
"email": "francesco.defrancesco@gmail.com"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "Use U2F-Keys as 2FA for Symfony2, using scheb/two-factor-bundle",
|
||||||
|
"homepage": "https://github.com/darookee/u2f-two-factor-bundle",
|
||||||
|
"keywords": [
|
||||||
|
"authentication",
|
||||||
|
"fido",
|
||||||
|
"symfony2",
|
||||||
|
"two-factor",
|
||||||
|
"two-step",
|
||||||
|
"yubikey"
|
||||||
|
],
|
||||||
|
"support": {
|
||||||
|
"source": "https://github.com/jbtronics/u2f-two-factor-bundle/tree/scheb/2fa-support"
|
||||||
|
},
|
||||||
|
"time": "2022-08-13T22:31:11+00:00"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "s9e/regexp-builder",
|
"name": "s9e/regexp-builder",
|
||||||
"version": "1.4.6",
|
"version": "1.4.6",
|
||||||
|
@ -9955,6 +10021,74 @@
|
||||||
],
|
],
|
||||||
"time": "2022-07-24T16:15:25+00:00"
|
"time": "2022-07-24T16:15:25+00:00"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "symfony/templating",
|
||||||
|
"version": "v5.4.11",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/symfony/templating.git",
|
||||||
|
"reference": "3933eaad08c7f83672c53f635d7c3988252a658a"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/symfony/templating/zipball/3933eaad08c7f83672c53f635d7c3988252a658a",
|
||||||
|
"reference": "3933eaad08c7f83672c53f635d7c3988252a658a",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"php": ">=7.2.5",
|
||||||
|
"symfony/polyfill-ctype": "~1.8"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"psr/log": "^1|^2|^3"
|
||||||
|
},
|
||||||
|
"suggest": {
|
||||||
|
"psr/log-implementation": "For using debug logging in loaders"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"Symfony\\Component\\Templating\\": ""
|
||||||
|
},
|
||||||
|
"exclude-from-classmap": [
|
||||||
|
"/Tests/"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"MIT"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Fabien Potencier",
|
||||||
|
"email": "fabien@symfony.com"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Symfony Community",
|
||||||
|
"homepage": "https://symfony.com/contributors"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "Provides all the tools needed to build any kind of template system",
|
||||||
|
"homepage": "https://symfony.com",
|
||||||
|
"support": {
|
||||||
|
"source": "https://github.com/symfony/templating/tree/v5.4.11"
|
||||||
|
},
|
||||||
|
"funding": [
|
||||||
|
{
|
||||||
|
"url": "https://symfony.com/sponsor",
|
||||||
|
"type": "custom"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://github.com/fabpot",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
|
||||||
|
"type": "tidelift"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"time": "2022-06-27T16:58:25+00:00"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/translation",
|
"name": "symfony/translation",
|
||||||
"version": "v5.4.11",
|
"version": "v5.4.11",
|
||||||
|
@ -11936,6 +12070,48 @@
|
||||||
"source": "https://github.com/webmozarts/assert/tree/1.11.0"
|
"source": "https://github.com/webmozarts/assert/tree/1.11.0"
|
||||||
},
|
},
|
||||||
"time": "2022-06-03T18:03:27+00:00"
|
"time": "2022-06-03T18:03:27+00:00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "yubico/u2flib-server",
|
||||||
|
"version": "1.0.2",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/Yubico/php-u2flib-server.git",
|
||||||
|
"reference": "55d813acf68212ad2cadecde07551600d6971939"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/Yubico/php-u2flib-server/zipball/55d813acf68212ad2cadecde07551600d6971939",
|
||||||
|
"reference": "55d813acf68212ad2cadecde07551600d6971939",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"ext-openssl": "*",
|
||||||
|
"paragonie/random_compat": ">= 1",
|
||||||
|
"php": ">=5.6"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"phpunit/phpunit": "~5.7",
|
||||||
|
"vimeo/psalm": "^0|^1|^2"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"autoload": {
|
||||||
|
"classmap": [
|
||||||
|
"src/"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"BSD-2-Clause"
|
||||||
|
],
|
||||||
|
"description": "Library for U2F implementation",
|
||||||
|
"homepage": "https://developers.yubico.com/php-u2flib-server",
|
||||||
|
"support": {
|
||||||
|
"issues": "https://github.com/Yubico/php-u2flib-server/issues",
|
||||||
|
"source": "https://github.com/Yubico/php-u2flib-server/tree/1.0.2"
|
||||||
|
},
|
||||||
|
"abandoned": true,
|
||||||
|
"time": "2018-09-07T08:16:44+00:00"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"packages-dev": [
|
"packages-dev": [
|
||||||
|
@ -14449,6 +14625,7 @@
|
||||||
"minimum-stability": "stable",
|
"minimum-stability": "stable",
|
||||||
"stability-flags": {
|
"stability-flags": {
|
||||||
"florianv/swap-bundle": 20,
|
"florianv/swap-bundle": 20,
|
||||||
|
"r/u2f-two-factor-bundle": 20,
|
||||||
"roave/security-advisories": 20
|
"roave/security-advisories": 20
|
||||||
},
|
},
|
||||||
"prefer-stable": false,
|
"prefer-stable": false,
|
||||||
|
|
|
@ -24,4 +24,5 @@ return [
|
||||||
Nelmio\SecurityBundle\NelmioSecurityBundle::class => ['all' => true],
|
Nelmio\SecurityBundle\NelmioSecurityBundle::class => ['all' => true],
|
||||||
Symfony\UX\Turbo\TurboBundle::class => ['all' => true],
|
Symfony\UX\Turbo\TurboBundle::class => ['all' => true],
|
||||||
Scheb\TwoFactorBundle\SchebTwoFactorBundle::class => ['all' => true],
|
Scheb\TwoFactorBundle\SchebTwoFactorBundle::class => ['all' => true],
|
||||||
|
R\U2FTwoFactorBundle\RU2FTwoFactorBundle::class => ['all' => true],
|
||||||
];
|
];
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
#ru2_f_two_factor:
|
ru2_f_two_factor:
|
||||||
# formTemplate: "/security/U2F/u2f_login.html.twig"
|
formTemplate: "/security/U2F/u2f_login.html.twig"
|
||||||
# registerTemplate: "/security/U2F/u2f_register.html.twig"
|
registerTemplate: "/security/U2F/u2f_register.html.twig"
|
||||||
# authCodeParameter: _auth_code
|
authCodeParameter: _auth_code
|
|
@ -2,14 +2,23 @@
|
||||||
scheb_two_factor:
|
scheb_two_factor:
|
||||||
|
|
||||||
google:
|
google:
|
||||||
enabled: true
|
enabled: true # If Google Authenticator should be enabled, default false
|
||||||
|
server_name: '%partdb.title%' # Server name used in QR code
|
||||||
|
issuer: 'Part-DB' # Issuer name used in QR code
|
||||||
|
digits: 6 # Number of digits in authentication code
|
||||||
|
window: 1 # How many codes before/after the current one would be accepted as valid
|
||||||
template: security/2fa_form.html.twig
|
template: security/2fa_form.html.twig
|
||||||
|
|
||||||
backup_codes:
|
backup_codes:
|
||||||
enabled: true
|
enabled: true # If the backup code feature should be enabled
|
||||||
|
|
||||||
trusted_device:
|
trusted_device:
|
||||||
enabled: true
|
enabled: true # If the trusted device feature should be enabled
|
||||||
|
lifetime: 5184000 # Lifetime of the trusted device token
|
||||||
|
extend_lifetime: false # Automatically extend lifetime of the trusted cookie on re-login
|
||||||
|
cookie_name: trusted_device # Name of the trusted device cookie
|
||||||
|
cookie_secure: false # Set the 'Secure' (HTTPS Only) flag on the trusted device cookie
|
||||||
|
cookie_same_site: "lax" # The same-site option of the cookie, can be "lax" or "strict"
|
||||||
|
|
||||||
security_tokens:
|
security_tokens:
|
||||||
- Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken
|
- Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken
|
||||||
|
|
|
@ -5,3 +5,7 @@
|
||||||
|
|
||||||
2fa_login_check:
|
2fa_login_check:
|
||||||
path: /{_locale}/2fa_check
|
path: /{_locale}/2fa_check
|
||||||
|
|
||||||
|
r_u2f_register:
|
||||||
|
resource: "@RU2FTwoFactorBundle/Resources/config/routing.yml"
|
||||||
|
prefix: /{_locale}/user
|
|
@ -56,7 +56,7 @@ use u2flib_server\Registration;
|
||||||
* })
|
* })
|
||||||
* @ORM\HasLifecycleCallbacks()
|
* @ORM\HasLifecycleCallbacks()
|
||||||
*/
|
*/
|
||||||
class U2FKey /*implements TwoFactorKeyInterface*/
|
class U2FKey implements TwoFactorKeyInterface
|
||||||
{
|
{
|
||||||
use TimestampTrait;
|
use TimestampTrait;
|
||||||
|
|
||||||
|
@ -112,13 +112,13 @@ class U2FKey /*implements TwoFactorKeyInterface*/
|
||||||
**/
|
**/
|
||||||
protected $user;
|
protected $user;
|
||||||
|
|
||||||
/*public function fromRegistrationData(Registration $data): void
|
public function fromRegistrationData(Registration $data): void
|
||||||
{
|
{
|
||||||
$this->keyHandle = $data->keyHandle;
|
$this->keyHandle = $data->keyHandle;
|
||||||
$this->publicKey = $data->publicKey;
|
$this->publicKey = $data->publicKey;
|
||||||
$this->certificate = $data->certificate;
|
$this->certificate = $data->certificate;
|
||||||
$this->counter = $data->counter;
|
$this->counter = $data->counter;
|
||||||
}*/
|
}
|
||||||
|
|
||||||
public function getKeyHandle()
|
public function getKeyHandle()
|
||||||
{
|
{
|
||||||
|
|
|
@ -65,8 +65,8 @@ use Doctrine\Common\Collections\Collection;
|
||||||
use Doctrine\ORM\Mapping as ORM;
|
use Doctrine\ORM\Mapping as ORM;
|
||||||
use Exception;
|
use Exception;
|
||||||
use function in_array;
|
use function in_array;
|
||||||
//use R\U2FTwoFactorBundle\Model\U2F\TwoFactorInterface as U2FTwoFactorInterface;
|
use R\U2FTwoFactorBundle\Model\U2F\TwoFactorInterface as U2FTwoFactorInterface;
|
||||||
//use R\U2FTwoFactorBundle\Model\U2F\TwoFactorKeyInterface;
|
use R\U2FTwoFactorBundle\Model\U2F\TwoFactorKeyInterface;
|
||||||
use Scheb\TwoFactorBundle\Model\BackupCodeInterface;
|
use Scheb\TwoFactorBundle\Model\BackupCodeInterface;
|
||||||
use Scheb\TwoFactorBundle\Model\Google\TwoFactorInterface;
|
use Scheb\TwoFactorBundle\Model\Google\TwoFactorInterface;
|
||||||
use Scheb\TwoFactorBundle\Model\PreferredProviderInterface;
|
use Scheb\TwoFactorBundle\Model\PreferredProviderInterface;
|
||||||
|
@ -84,7 +84,7 @@ use Symfony\Component\Validator\Constraints as Assert;
|
||||||
* @ORM\EntityListeners({"App\EntityListeners\TreeCacheInvalidationListener"})
|
* @ORM\EntityListeners({"App\EntityListeners\TreeCacheInvalidationListener"})
|
||||||
* @UniqueEntity("name", message="validator.user.username_already_used")
|
* @UniqueEntity("name", message="validator.user.username_already_used")
|
||||||
*/
|
*/
|
||||||
class User extends AttachmentContainingDBElement implements UserInterface, HasPermissionsInterface, TwoFactorInterface, BackupCodeInterface, TrustedDeviceInterface, /*U2FTwoFactorInterface,*/ PreferredProviderInterface, PasswordAuthenticatedUserInterface
|
class User extends AttachmentContainingDBElement implements UserInterface, HasPermissionsInterface, TwoFactorInterface, BackupCodeInterface, TrustedDeviceInterface, U2FTwoFactorInterface, PreferredProviderInterface, PasswordAuthenticatedUserInterface
|
||||||
{
|
{
|
||||||
//use MasterAttachmentTrait;
|
//use MasterAttachmentTrait;
|
||||||
|
|
||||||
|
|
|
@ -354,6 +354,9 @@
|
||||||
"psr/simple-cache": {
|
"psr/simple-cache": {
|
||||||
"version": "1.0.1"
|
"version": "1.0.1"
|
||||||
},
|
},
|
||||||
|
"r/u2f-two-factor-bundle": {
|
||||||
|
"version": "dev-scheb/2fa-support"
|
||||||
|
},
|
||||||
"roave/security-advisories": {
|
"roave/security-advisories": {
|
||||||
"version": "dev-master"
|
"version": "dev-master"
|
||||||
},
|
},
|
||||||
|
|
|
@ -143,7 +143,7 @@
|
||||||
<p><b>{% trans %}tfa_u2f.no_keys_registered{% endtrans %}</b></p>
|
<p><b>{% trans %}tfa_u2f.no_keys_registered{% endtrans %}</b></p>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{# <a href="{{ path('club_base_register_u2f') }}" class="btn btn-success"><i class="fas fa-plus-square fa-fw"></i> {% trans %}tfa_u2f.add_new_key{% endtrans %}</a>#}
|
<a href="{{ path('club_base_register_u2f') }}" class="btn btn-success"><i class="fas fa-plus-square fa-fw"></i> {% trans %}tfa_u2f.add_new_key{% endtrans %}</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="tab-pane fade" id="tfa-trustedDevices" role="tabpanel" aria-labelledby="trustedDevices-tab-tab">
|
<div class="tab-pane fade" id="tfa-trustedDevices" role="tabpanel" aria-labelledby="trustedDevices-tab-tab">
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue