CrushFTP has One Time Password (__[OTP/MFA|OTP Settings]__) based authentication feature with Google's and Microsoft's software-based token device __Google Authenticator__ and __Microsoft Authenticator__, using Time based OTP (TOTP) / MFA. The user can register a QR code into their Authenticator app.\\
\\
!!Server side configuration\\
The config needs the URL set to "SMTP" and the checkbox for "Validated Logins" enabled.\\
\\
[attachments|servercfg001.png]\\
\\
Next enable the two factor __QR code generator__ which will appear in the user's __User Options__ menu when they are logged in.\\
\\
[attachments|enable_two_factor.png]\\
 * You can also force two factor registration, then the user has no choice but to enroll in it at their next login.  Set the customization flag "Two Factor: force Google Authenticator setup" to true.  See the mini animated gif of the process below.\\
\\
!!Client / token device configuration\\
The user will need to log in normally, generate the QR code from the client UI __User Options__ menu.\\
\\
[attachments|qr_otp.png]\\
\\
__This part must be done within 30 seconds or the QR code becomes invalid.__\\
1.) Once they are ready and have the Authenticator app open on their mobile device, they click __Ready To Scan__.\\
2.) Choose to scan the QR code, point the device towards the screen, and let it read in the QR code.\\
3.) Next click __Confirm__ to save the same code to the server's user configuration.\\
\\
 Google Authenticator\\
[{Image src='tokencfg002.png' width='272px' height='..' align='left'}]  [{Image src='tokencfg003.png' width='272px' height='..' align='left'}]\\
\\
 Microsoft Authenticator\\
[{Image src='IMG_2500.jpg' width='272px' height='..' align='left'}]  [{Image src='IMG_2501.jpg' width='272px' height='..' align='left'}]  [{Image src='IMG_2502.jpg' width='272px' height='..' align='left'}]\\
\\
__WARNING:__ the QR code is valid for 30 seconds, if the time window is missed you will need to generate new, or it will not save. Once a secret key has been saved from the QR code, and confirmed, it can only be reset by a server administrator.  It's a one-time process.\\
\\


!!Possible scenarios regarding the cooperation of admin and the end-user:

Prerequisites:

-a working Google Authenticator app on a mobile device\\
-in the User Manager -> user -> Webinterface -> Available customizations section the "Enable two factor registration" is set to True. This can be enabled on the "default" template account or on the group template account so all other users will inherit the setting from the template user.\\
-on Preferences -> General Settings -> OTP section the "Validated Logins" option must be enabled (A on the first screenshot)\\
-for the 2nd option the user account has to be configured with an email address. Also, the server needs to have a working SMTP relay configured on Preferences -> General Settings -> SMTP section.


1. This is the easiest method for the admin.
The option of "Google Authenticator Auto Enable" on Preferences -> General Settings -> OTP section is enabled (B on the first screenshot).
In User Manager the "Two factor OTP/SMS authentication" option is disabled.

The end-user logs in with username and password, and initializes the "Setup of 2 factor auth" via the User Options button, scans the QR code, and hits the Confirm button.
In the background, CrushFTP writes the Two factor authentication Secret to the user account and takes care of enabling the "Two factor OTP/SMS authentication" option for the user.

2. 
The option of "Google Authenticator Auto Enable" on Preferences -> General Settings -> OTP section is left in disabled state.
In User Manager the "Two factor OTP/SMS authentication" option is enabled by the admin.

The end-user enters its username and password on the login page. A popup will be prompted asking for the email-based token, then the user is allowed to log in and initialize the Setup of 2 factor auth via the User Options button. Next time won't get an email, and at the token popup enters the 6-digit code generated by Google Authenticator.

3.
The option of "Google Authenticator Auto Enable" on Preferences -> General Settings -> OTP section is left in disabled state.
In User Manager the user doesn't have the "Two factor OTP/SMS authentication" option enabled

The end-user logs in with username and password, and initializes the Setup of 2 factor auth via the User Options button, scans the QR code, and hits the Confirm button.
In the background, CrushFTP writes the Two-factor authentication Secret to the user account, but the Admin needs to activate the "Two factor OTP/SMS authentication" option for the user.


__[DMZ|DMZ]__ - Main node scenario: on Preferences -> General Settings -> OTP section the "Validated Logins" option must be enabled on the DMZ node, so the DMZ gives the two-factor authentication to the Main node.
\\
----
\\
Google Authenticator for Webinterface logins only, enrolling is not possible via FTP, SFTP. 
A hidden flag in __prefs.XML__ controls for which protocols OTP should be enabled by default
{{{
<twofactor_secret_auto_otp_enable_protocols>ftp,ftps,sftp,http,https,webdav</twofactor_secret_auto_otp_enable_protocols>
}}}
\\