Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Two-Factor Authentication for SMF using TOTP protocol #2547

Merged
merged 27 commits into from
Dec 3, 2014

Conversation

Dragooon
Copy link
Contributor

This PR adds support for 2FA for SMF using TOTP protocol, allowing users to register a secondary layer of authentication via a device with app such as Google Authenticator, Authy, Duo Mobile etc.

This implementation is based on RFC 6238 Time-Based One Time Password protocol, The user can register a secondary 2FA device via their Account Settings profile area allowing them to add a layer of security upon logging in. This setup provides them a backup code as well, should they lose the device they can use this (it is recommended to store this backup code in a secure place and use only in emergency).

Internally the authentication is stored in a cookie generated with the data sha512(tfa_backup + password_salt), this is checked in loadUserSettings and the user is logged out if it fails and is forwarded to 2FA login screen.

To-do:

  • Allow Admins to enable, disable and force 2FA
  • Allow Admins to disable 2FA on other members
  • Add credits for \TOTP\Auth class to contributors/credits etc

@Dragooon Dragooon changed the title [WIP] Two-Factor Authentication for SMF using TOTP protocol Two-Factor Authentication for SMF using TOTP protocol Dec 2, 2014
@Dragooon Dragooon added this to the Beta 2 milestone Dec 2, 2014
Class taken from github.com/enygma/gauth, renamed to \TOTP\Auth since it's a pretty generic TOTP class. Will be used for implementing TFA in SMF

Signed-off-by: Shitiz Garg <mail@dragooon.net>
Signed-off-by: Shitiz Garg <mail@dragooon.net>
Signed-off-by: Shitiz Garg <mail@dragooon.net>
Signed-off-by: Shitiz Garg <mail@dragooon.net>
Signed-off-by: Shitiz Garg <mail@dragooon.net>
Signed-off-by: Shitiz Garg <mail@dragooon.net>
Don't expose tfa_secret in any form to the client side, tfa_backup is bcrypt encrypted and much harder to crack as compared to the plain text tfa_secret

Signed-off-by: Shitiz Garg <mail@dragooon.net>
Signed-off-by: Shitiz Garg <mail@dragooon.net>
Signed-off-by: Shitiz Garg <mail@dragooon.net>
Signed-off-by: Shitiz Garg <mail@dragooon.net>
Signed-off-by: Shitiz Garg <mail@dragooon.net>
Signed-off-by: Shitiz Garg <mail@dragooon.net>
Signed-off-by: Shitiz Garg <mail@dragooon.net>
Signed-off-by: Shitiz Garg <mail@dragooon.net>
Signed-off-by: Shitiz Garg <mail@dragooon.net>
Signed-off-by: Shitiz Garg <mail@dragooon.net>
Signed-off-by: Shitiz Garg <mail@dragooon.net>
Signed-off-by: Shitiz Garg <mail@dragooon.net>
Signed-off-by: Shitiz Garg <mail@dragooon.net>
Signed-off-by: Shitiz Garg <mail@dragooon.net>
Signed-off-by: Shitiz Garg <mail@dragooon.net>
Signed-off-by: Shitiz Garg <mail@dragooon.net>
Signed-off-by: Shitiz Garg <mail@dragooon.net>
Signed-off-by: Shitiz Garg <mail@dragooon.net>
Signed-off-by: Shitiz Garg <mail@dragooon.net>
Additional security

Signed-off-by: Shitiz Garg <mail@dragooon.net>
Signed-off-by: Shitiz Garg <mail@dragooon.net>
Oldiesmann added a commit that referenced this pull request Dec 3, 2014
Two-Factor Authentication for SMF using TOTP protocol
@Oldiesmann Oldiesmann merged commit 84e5539 into SimpleMachines:release-2.1 Dec 3, 2014
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants