Multi-factor Authentication (MFA) for browser monitors
Multi-factor Authentication (MFA) adds an essential layer of security to applications login processes, protecting against unauthorized access. A very common use case in Synthetics is testing user journeys involving websites protected by MFA.
Synthetics supports testing websites secured by Time-based One-Time Password (TOTP), a common MFA method that provides short-lived one-time tokens to enhance security.
Configuring TOTP for MFA ¶
To test a browser journey that uses TOTP for MFA, first configure the Synthetics authenticator token in the target application. To do this, generate a One-Time Password (OTP) using the Synthetics CLI; refer to @elastic/synthetics totp <secret>
.
npx @elastic/synthetics totp <secret>
// prints
OTP Token: 123456
Applying the TOTP Token in Browser Journeys ¶
Once the Synthetics TOTP Authentication is configured in your application, you can now use the OTP token in the synthetics browser journeys using the mfa
object imported from @elastic/synthetics
.
import { journey, step, mfa} from '@elastic/synthetics';
journey('MFA Test', ({ page, params }) => {
step('Login using TOTP token', async () => {
// login using username and pass and go to 2FA in next page
const token = mfa.totp(params.MFA_SECRET);
await page.getByPlaceholder("token-input").fill(token)
});
});
For monitors created in the Synthetics UI using the Script editor, the mfa
object can be accessed as shown below:
step('Login using 2FA', async () => {
const token = mfa.totp(params.MFA_SECRET);
await page.getByPlaceholder("token-input").fill(token)
});
Note
params.MFA_SECRET
would be the encoded secret that was used for registering the Synthetics Authentication in your web application.