mirror of
https://github.com/0rangebananaspy/authelia.git
synced 2024-09-14 22:47:21 +07:00
8f05846e21
This implements Webauthn. Old devices can be used to authenticate via the appid compatibility layer which should be automatic. New devices will be registered via Webauthn, and devices which do not support FIDO2 will no longer be able to be registered. At this time it does not fully support multiple devices (backend does, frontend doesn't allow registration of additional devices). Does not support passwordless.
48 lines
1.8 KiB
SQL
48 lines
1.8 KiB
SQL
ALTER TABLE totp_configurations RENAME TO _bkp_UP_V0002_totp_configurations;
|
|
ALTER TABLE u2f_devices RENAME TO _bkp_UP_V0002_u2f_devices;
|
|
|
|
CREATE TABLE IF NOT EXISTS totp_configurations (
|
|
id SERIAL,
|
|
created_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
last_used_at TIMESTAMP WITH TIME ZONE NULL DEFAULT NULL,
|
|
username VARCHAR(100) NOT NULL,
|
|
issuer VARCHAR(100),
|
|
algorithm VARCHAR(6) NOT NULL DEFAULT 'SHA1',
|
|
digits INTEGER NOT NULL DEFAULT 6,
|
|
period INTEGER NOT NULL DEFAULT 30,
|
|
secret BYTEA NOT NULL,
|
|
PRIMARY KEY (id),
|
|
UNIQUE (username)
|
|
);
|
|
|
|
INSERT INTO totp_configurations (id, username, issuer, algorithm, digits, period, secret)
|
|
SELECT id, username, issuer, algorithm, digits, period, secret
|
|
FROM _bkp_UP_V0002_totp_configurations;
|
|
|
|
CREATE TABLE IF NOT EXISTS webauthn_devices (
|
|
id SERIAL,
|
|
created_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
last_used_at TIMESTAMP WITH TIME ZONE NULL DEFAULT NULL,
|
|
rpid TEXT,
|
|
username VARCHAR(100) NOT NULL,
|
|
description VARCHAR(30) NOT NULL DEFAULT 'Primary',
|
|
kid VARCHAR(100) NOT NULL,
|
|
public_key BYTEA NOT NULL,
|
|
attestation_type VARCHAR(32),
|
|
transport VARCHAR(20) DEFAULT '',
|
|
aaguid CHAR(36) NOT NULL,
|
|
sign_count INTEGER DEFAULT 0,
|
|
clone_warning BOOLEAN NOT NULL DEFAULT FALSE,
|
|
PRIMARY KEY (id),
|
|
UNIQUE (username, description),
|
|
UNIQUE (kid)
|
|
);
|
|
|
|
INSERT INTO webauthn_devices (id, rpid, username, description, kid, public_key, attestation_type, aaguid, sign_count)
|
|
SELECT id, '', username, description, ENCODE(key_handle::BYTEA, 'base64'), public_key, 'fido-u2f', '00000000-0000-0000-0000-000000000000', 0
|
|
FROM _bkp_UP_V0002_u2f_devices;
|
|
|
|
UPDATE user_preferences
|
|
SET second_factor_method = 'webauthn'
|
|
WHERE second_factor_method = 'u2f';
|