APPX Two-Factor Authentication (2FA)
Appx 2FA is an identity and access management security method that requires two forms of identification to access Appx server resources and data. Appx 2FA utilizes time-based one-time passcodes (TOTP) that are time-sensitive to prevent identity theft.
How it works:
- A secret key, unique to each user account, is shared between the user's authenticator app (like Google, Microsoft, FreeOTP or Authy Authenticators) and the Appx server.
- The authenticator app uses this secret key and the current time to calculate a one-time password (OTP).
- The OTP is valid for a short period (typically 30-60 seconds, 30 seconds in the case of Appx) and changes automatically.
- When a user logs in, they enter the current OTP displayed on their authenticator app, which the Appx server verifies against its own calculation.
Why it's secure:
- The OTPs are time-sensitive, making it difficult for attackers to intercept and reuse them.
- TOTP requires something the user has (their device/authenticator app) in addition to something they know (their password), making it more secure than traditional passwords.
To enable 2FA for Appx you have two choices. First , you can enable 2FA site wide by adding ‘APPX_2FA_ENABLED=true’ to your appx.env file. Or two, you can enable 2FA for each individual user account as shown in the screenshot below:
Note: If you want to clear the secret key for any user, simply check the Clear Sec? checkbox (as shown above) and press enter.
Once enabled on your Appx server, the following screen shots show what you will see during the 2FA setup and 2FA login processes:
The QR code as displayed in the Java client:
The QR code as displayed in the Html client:
For the character mode client, no QR code is displayed only the secret key:
The TOTP code as displayed in the Java client:
The TOTP code as displayed in the Html client:
The TOTP code as displayed in the character mode client:
If the TOTP code you entered is rejected, because it was entered wrong or has expired, this is what you will see as shown on the Java client:
As shown on the Html client: