What risk-based MFA is
Risk-based multi-factor authentication (MFA), also called step-up or adaptive authentication, asks for a second factor only when the context of a login or action points to higher risk: a new device, suspicious network signals, signs of automation or a high-impact action such as changing payout details. Low-risk sessions continue with their normal login, and only the risky ones are asked for MFA or blocked. You keep the protection of MFA without putting an extra step in front of every user.
Risk-based multi-factor authentication (MFA) with TrustCaptcha
Multi-factor authentication (MFA) is one of the most effective controls against account takeover, especially against credential stuffing and reused passwords. The catch is that MFA on every login gets in the way: it adds steps, makes people give up, and creates support work for lost devices, locked accounts and OTP codes that never arrive.
TrustCaptcha helps you use MFA in a way that is both strong and practical. It works as an invisible CAPTCHA with no puzzle and no task for the user, and returns a bot score with every verification, from 0 (very likely human) to 1 (very likely bot). That makes risk-based MFA (step-up authentication) possible: most legitimate users carry on without interruption, and only borderline and high-risk cases are sent to MFA.
What MFA is and why businesses rely on it
With MFA, users prove their identity with at least two independent factors:
- Something you know: password, PIN
- Something you have: authenticator app, hardware key, device-bound passkey
- Something you are: biometrics (often as part of device-bound authentication)
MFA makes it much less likely that a stolen password alone grants access. It pays off most where attackers automate their abuse:
- Login endpoints
- Password reset flows
- Registration and sign-up (to prevent fake account creation)
- Sensitive actions (payments, admin changes, exports)
The usability problem: why “MFA everywhere” gets in the way
MFA for everyone and everything creates friction you can measure:
- Lost conversions: users abandon a flow when a prompt comes out of nowhere.
- Support load: lockouts, new phones, lost second factors.
- Accessibility: some challenge types are hard to use for people with disabilities.
- Operational complexity: handling exceptions becomes the norm instead of the rare case.
That is why many organizations use step-up MFA: they ask for MFA when the risk is higher, not across the board.
Risk-based MFA: the step-up model
Risk-based MFA looks at the context and sends each user to one of three outcomes:
- Allow: low risk, continue with normal authentication
- Step-up: medium to high risk, require MFA
- Deny or block: very high risk, block the attempt or require stronger proof
The point is that the friction of MFA becomes targeted. Security improves, and legitimate users barely notice.
Where TrustCaptcha fits: assessment in the background, step-up where needed
TrustCaptcha supports risk-based MFA in two ways:
1) Verification in the background (no puzzle, no interaction)
TrustCaptcha runs in the background and looks for automation and suspicious behavior. Legitimate users see no puzzle and have nothing to click; if you want no visible widget at all, the Captcha Branding add-on makes it fully invisible.
2) Routing by bot score (borderline and risky sessions only)
Each request receives a bot score from 0 (very likely human) to 1 (very likely bot): the higher the score, the more likely a bot sent the request. Bot scoring is included from the Solo plan. You set the thresholds, for example:
- Bot score below 0.3 → allow (no MFA prompt)
- Bot score from 0.3 to 0.7 → step-up MFA
- Bot score above 0.7 → block or stronger verification
These numbers are an example. For a single cut-off, 0.5 is the recommended starting threshold; two thresholds give you a middle band for step-up. Your server also gets a hard yes or no: whether the verification passed. It is false, for example, when one of your security rules blocks the request. Check it first and treat a failed verification like the block band.
This way MFA does not turn into a constant interruption, and you still require stronger proof exactly when abuse is more likely.
Recommended reference architecture
A simple, reliable pattern looks like this:
- A user starts an interaction (a login attempt or a sensitive action)
- TrustCaptcha runs in the background and returns a token
- Your backend verifies the token with TrustCaptcha and receives the verification result and the bot score
- Your policy engine decides: allow, step-up MFA or block
- If step-up is required, your MFA provider handles the challenge (TOTP, push, WebAuthn and so on)
- The decision, score and outcome are logged for monitoring and audit trails
TrustCaptcha stays a risk signal and abuse filter, and your MFA stack remains the mechanism that proves identity.
Policy design: turning the bot score into consistent decisions
A policy should be deterministic, explainable and testable. Most businesses start with tiered thresholds and then refine them with business context.
A baseline bot score policy (example)
{
"rules": [
{"if": "verificationPassed == false", "action": "block"},
{"if": "score < 0.3", "action": "allow"},
{"if": "score >= 0.3 && score <= 0.7", "action": "step_up_mfa"},
{"if": "score > 0.7", "action": "block_or_strong_step_up"}
]
}Mind the direction: on TrustCaptcha the low score is the good one. If you are moving from reCAPTCHA v3, where 1.0 means human, flip the comparisons, not only the numbers.
Add business context for high-risk actions
You can tighten the policy for actions with a bigger impact:
- Changing the password, email address or phone number
- Payment or payout changes
- Admin role changes
- Exporting data
- Creating API keys
- Bulk actions
Example: “Always step-up MFA for payout changes, whatever the score” (or skip MFA only when the bot score is very low).
Common risk signals to combine with the bot score
Combine the bot score with your own telemetry to cover blind spots:
- New device or new browser profile
- Impossible travel or unusual geo-velocity
- Repeated failed logins
- Credential stuffing patterns
- IP reputation or ASN anomalies
- High request velocity
- Signs of breached credentials (if you track them)
The goal is not more complexity. It is to make sure that step-up triggers mean something and are hard to game.
Integration best practices (checklist)
1) Protect the right surfaces first
Start with the endpoints where abuse is most likely and does the most damage:
- Login
- Password reset
- Registration
- High-impact account changes
2) Let the server decide
Never trust the client alone. Your backend should:
- Verify TrustCaptcha tokens
- Check whether the verification passed, then evaluate the bot score against your policy
- Decide whether to step up to MFA or deny
This stops manipulation on the client and keeps enforcement the same across platforms.
3) Design a clean step-up UX
When step-up is required:
- Explain why in plain language (“We need to confirm it’s really you.”)
- Offer strong factors first (WebAuthn or passkeys, authenticator app)
- Provide accessible alternatives where needed
- Avoid puzzle-style challenges for MFA; keep it about identity
4) Add rate limits and lockout protection
Attackers may try to trigger MFA prompts to annoy users or overload your service. Use:
- Rate limits per IP address and per account
- Longer waiting times after repeated failures
- Safe lockout handling and recovery paths
5) Log decisions for monitoring and incident response
Log structured events:
- Bot score (or a score range)
- Policy decision (allow, step-up, block)
- MFA outcome (success or failure)
- Action type (login, reset, payout change)
- Correlation IDs for investigations
These logs help with tuning, troubleshooting and audit trails.
6) Tune thresholds with real-world feedback
Treat the policy like a control system:
- Start cautious (more step-up than you will want in the end)
- Watch false positives and friction metrics
- Adjust thresholds per endpoint and action type
- Roll out in phases (pilot first, then wider)
MFA method guidance (choosing factors that fit your risk)
Not all MFA is equal. A practical ranking that many businesses follow:
- Preferred (phishing-resistant): WebAuthn, passkeys, FIDO2 security keys
- Strong: authenticator app (TOTP), push with number matching (where supported)
- Fallback (use with care): SMS OTP (better than nothing, but riskier than phishing-resistant methods)
TrustCaptcha makes sure you ask for these steps only when the situation is uncertain or risky, not from everyone.
Accessibility and compliance considerations
Risk-based flows should stay usable for everyone:
- Make MFA screens work with a keyboard and with screen readers
- Avoid timeouts that are too short
- Offer alternative factors (for example WebAuthn with a TOTP fallback)
- Keep instructions clear and consistent
TrustCaptcha helps by keeping the default path free of friction: most users never see a challenge, and only a small share goes through step-up.
Operational playbook: testing, rollout and ongoing control
Testing before production
- Simulate known bot patterns and harmless automation
- Check the step-up triggers on suspicious logins and sensitive actions
- Test recovery flows and account support processes
Gradual rollout
- Start in “observe mode” (log decisions without enforcing them)
- Then enforce step-up MFA for medium risk
- Finally switch on blocking for patterns that are clearly malicious
Continuous tuning
- Review the step-up rate by endpoint and region
- Track conversion and support tickets
- Watch for attack signs (credential stuffing spikes, unusual request velocity)
Quick implementation checklist
- Identify the endpoints to protect (login, reset, sign-up, sensitive actions)
- Integrate the TrustCaptcha widget and server verification
- Define bot score thresholds and policies per action
- Connect step-up decisions to your MFA provider
- Add rate limiting and lockout protection
- Set up structured logging and dashboards
- Roll out in stages and tune based on evidence
Try TrustCaptcha
Risk-based MFA protects accounts without turning every login into a hurdle. TrustCaptcha assesses risk in the background, so only borderline and high-risk cases go to MFA. Legitimate users keep moving, and attackers face a higher bar. If you want help with the integration or with choosing your first thresholds, contact the TrustCaptcha team.
Every plan starts with a 14-day free trial, and non-commercial websites can use TrustCaptcha for free. Start your free trial and send only your risky logins to MFA.