downtownallday
ad3174f08e
Merge branch 'totp'
2020-10-31 11:39:35 -04:00
downtownallday
d1110c4c02
merge from upstream
2020-10-31 11:31:44 -04:00
downtownallday
a7370beae0
Merge remote-tracking branch 'fspoettel/admin-panel-2fa' into totp
...
# Conflicts:
# management/daemon.py
# management/mfa.py
2020-10-29 16:56:36 -04:00
Joshua Tauberer
601c23d91b
Add MFA list/disable to the management CLI so admins can restore access if MFA device is lost
2020-10-29 15:42:00 -04:00
Joshua Tauberer
ac9ecc3bd3
Rename tools/mail.py to management/cli.py
2020-10-29 15:41:54 -04:00
downtownallday
9057c12c38
Merge branch 'master' of https://github.com/mail-in-a-box/mailinabox
2020-10-16 21:07:36 -04:00
David Duque
8b166f3041
Display certificate expiry dates in ISO format ( #1841 )
2020-10-16 16:22:36 -04:00
Joshua Tauberer
5509420637
s/Days/Retention Days/ on the backup settings page
2020-10-15 14:11:43 -04:00
downtownallday
f6b04b314f
Add totpMruTokenTime to upgrade
2020-09-30 11:50:49 -04:00
downtownallday
100acb119b
Add a totpMruTokenTime value to record the time when the mru token was used
...
Use the totpMruTokenTime as the id to uniquely identify a totp entry
2020-09-30 11:00:58 -04:00
downtownallday
a5ebd07549
Merge remote-tracking branch 'fspoettel/admin-panel-2fa' into totp
...
# Conflicts:
# management/auth.py
# management/mfa.py
2020-09-30 09:05:03 -04:00
Felix Spöttel
1f0e493b8c
Exclude mru_token in user key hash
2020-09-30 12:34:26 +02:00
downtownallday
5deb88ab60
Merge remote-tracking branch 'fspoettel/admin-panel-2fa' into totp
...
# Conflicts:
# management/daemon.py
# management/mfa.py
# setup/mail-users.sh
2020-09-29 22:20:15 -04:00
Felix Spöttel
ada2167d08
Only update mru_token for matched mfa row
2020-09-29 20:05:58 +02:00
Felix Spöttel
be5032ffbe
Don't expose mru_token and secret for enabled mfas over HTTP
2020-09-29 19:46:02 +02:00
downtownallday
60771b7615
Merge branch 'master' of https://github.com/mail-in-a-box/mailinabox
2020-09-29 09:12:25 -04:00
downtownallday
75fb6d2a5d
Rename a function
2020-09-29 08:55:04 -04:00
downtownallday
042e8b4a56
Merge remote-tracking branch 'fspoettel/admin-panel-2fa' into totp
2020-09-28 23:25:29 -04:00
downtownallday
00fc94d3c1
Merge remote-tracking branch 'fspoettel/admin-panel-2fa' into totp
...
# Conflicts:
# management/auth.py
# management/daemon.py
# management/mailconfig.py
# setup/mail-users.sh
2020-09-28 23:25:16 -04:00
Felix Spöttel
4dced10a3f
Fix handling of bad input when enabling mfa
2020-09-28 21:06:59 +02:00
Joshua Tauberer
b80f225691
Reorganize MFA front-end and add label column
2020-09-27 08:31:23 -04:00
0pis
7f0f28f8e3
Use tabs instead of spaces in nginx conf ( #1827 )
...
* conf/nginx-primaryonly.conf: Use tabs instead of spaces
* management/web_update.py: Includes the tabs so they display with the correct indentation when added to the local.conf
Co-authored-by: 0pis <0pis>
2020-09-27 07:13:33 -04:00
Joshua Tauberer
a8ea456b49
Reorganize the MFA backend methods
2020-09-26 09:58:25 -04:00
downtownallday
a79c7fce91
Merge branch 'master' of https://github.com/mail-in-a-box/mailinabox
...
# Conflicts:
# README.md
2020-09-26 08:03:12 -04:00
Joshua Tauberer
51aedcf6c3
Drop the MTA-STS TLSRPT record unless set explicitly
2020-09-21 15:57:17 -04:00
downtownallday
d68a89af61
Merge remote-tracking branch 'fspoettel/admin-panel-2fa' into totp
...
# Conflicts:
# management/auth.py
# management/mailconfig.py
2020-09-12 19:44:22 -04:00
Felix Spöttel
7d6427904f
Typo
2020-09-12 16:38:44 +02:00
Felix Spöttel
dcb93d071c
Add TOTP secret to user_key hash
...
thanks @downtownallday
* this invalidates all user_keys after TOTP status is changed for user
* after changing TOTP state, a login is required
* due to the forced login, we can't and don't need to store the code used for setup in `mru_code`
2020-09-12 16:34:06 +02:00
downtownallday
24ae913d68
Merge remote-tracking branch 'fspoettel/admin-panel-2fa' into totp
...
# Conflicts:
# management/auth.py
# management/daemon.py
# setup/mail-users.sh
# setup/management.sh
# setup/migrate.py
2020-09-10 15:23:27 -04:00
Felix Spöttel
2ea97f0643
Do not log failed login attempts for MissingToken errors
...
* Due to the way that the /login UI works, this persists at least one failed login each time a user logs into the admin panel. This in turn triggers fail2ban at some point.
2020-09-06 13:08:44 +02:00
Felix Spöttel
4791c2fc62
Safeguard against empty mru_token column
...
* hmac.compare_digest() expects arguments of type string, make sure we don't pass None
* Currently, this cannot happen but we might not want to store `mru_token` during setup
2020-09-06 13:03:54 +02:00
Felix Spöttel
49c333221a
Use hmac.compare_digest() to compare mru_token
2020-09-06 12:54:45 +02:00
Felix Spöttel
481a333dc0
Address review feedback, thanks @hija
2020-09-04 20:28:15 +02:00
Felix Spöttel
b0df35eba0
conn.close() if mru_token update can't .commit()
2020-09-03 20:39:03 +02:00
Felix Spöttel
08ae3d2b7f
Rename internal validate_two_factor_secret => validate_two_factor_secret
2020-09-03 19:48:54 +02:00
Felix Spöttel
7c4eb0fb70
Add sqlite migration
2020-09-03 19:39:29 +02:00
Felix Spöttel
ee01eae55e
Decouple totp from users table by moving to totp_credentials table
...
* this allows implementation of other mfa schemes in the future (webauthn)
* also makes key management easier and enforces one totp credentials per user on db-level
2020-09-03 19:07:21 +02:00
Felix Spöttel
89b301afc7
Update OpenApi docs, rename /2fa/ => /mfa/
2020-09-03 13:54:28 +02:00
Felix Spöttel
ce70f44c58
Extract TOTPStrategy class to totp.py
...
* this decouples `TOTP` validation and storage logic from `auth` and moves it to `totp`
* reduce `pyotp.validate#valid_window` from `2` to `1`
2020-09-03 11:19:19 +02:00
Felix Spöttel
6594e19a1f
Autofocus otp input when logging in, update layout
2020-09-02 20:30:08 +02:00
Felix Spöttel
8597646a12
Update API route naming, update setup page
...
* Rename /two-factor-auth/ => /2fa/
* Nest totp routes under /2fa/totp/
* Update ids and methods in panel to allow for different setup types
2020-09-02 19:41:06 +02:00
Felix Spöttel
f205c48564
Use pyotp for validating TOTP codes
...
* also implements resynchronisation support via `pyotp`'s `valid_window option
2020-09-02 19:12:15 +02:00
Felix Spöttel
3c3683429b
implement two factor check during login
2020-09-02 17:23:32 +02:00
Felix Spöttel
a7a66929aa
add user interface for managing 2fa
...
* update user schema with 2fa columns
2020-09-02 16:48:23 +02:00
downtownallday
caf90702cc
Wording changes
2020-08-29 06:57:33 -04:00
downtownallday
191b575ab2
Add a display name for users, saved as 'cn' in LDAP
2020-08-25 16:33:06 -04:00
downtownallday
1fb9316904
spaces -> tabs
2020-08-25 12:21:11 -04:00
downtownallday
22bfef6f59
Display and allow chaninging a comment/description for aliases. Change the default comment for required aliases to "Required alias".
2020-08-25 12:00:55 -04:00
downtownallday
d0d12fbc1c
Merge branch 'master' of https://github.com/mail-in-a-box/mailinabox
2020-08-09 12:13:31 -04:00
David Duque
94da7bb088
status_checks.py: Properly terminate the process pools ( #1795 )
...
* Only spawn a thread pool when strictly needed
For --check-primary-hostname, the pool is not used.
When exiting, the other processes are left alive and will hang.
* Acquire pools with the 'with' statement
2020-08-09 11:42:39 -04:00