What are Challenges
π What Are Challenges?
A challenge is a security step a user must complete for authentication or verification. Common types include:
- π’ OTP (SMS, Email)
- π· Selfie or Document Scan (IDV)
- 𧬠Biometric (Fingerprint, Face ID)
- π Device-based (Confirmation of a known device)
Challenges are triggered during flows like:
- Activation (first-time setup)
- Login (same/new device)
- Password recovery
- Transaction approvals
βοΈ How They Work
-
Configured in Gateway Manager
Admins define which challenges are active, their order, and which are mandatory or optional. -
Triggered via SDK
The mobile SDK initiates and handles each challenge step-by-step based on server response. -
Controlled via Events
Each challenge emits specific SDK events that the application must listen for and respond to.
π Challenge Attempt Cooling Period in REL-ID SDK
This document explains how the cooling period (retry delay or lockout duration) is managed when users fail authentication challenges such as password, PIN, OTP, or custom challenges in the REL-ID SDK.
π SDK Behavior
- The REL-ID SDK does not enforce a hardcoded cooling period.
- Instead, cooling period and retry behavior are governed by server-side policies configured via the REL-ID Gateway Manager.
βοΈ Admin-Configurable Settings
Configuration for retry and lockout behavior is done under:
REL-ID Gateway Manager β Group Management β Challenge Category Configuration
Or:
Challenge Handling Configurations β Challenge Attempt Policy
Key Parameters:
Setting | Description |
---|---|
MAX_ATTEMPTS | Maximum allowed failed attempts before locking the user |
LOCK_DURATION | Optional cooldown (e.g., 15 mins, 1 hour) after which the user is unlocked |
AUTO_UNLOCK | If enabled, user is auto-unlocked after the lock duration |
π« What Happens on Final Failure
- SDK receives
statusCode = 166
indicating user account is locked - SDK calls
getUser()
to fetch latest status - App must handle this by showing a lockout message or triggering unblocking flow
π§ Developer Guidelines
- Always monitor
onGetUserResult()
or equivalent callbacks forstatusCode = 166
- Use
getUser()
to poll or validate if the lock period has passed - Optionally invoke
getUnblockUser()
if supported
π Example User Message
βYou have exceeded the maximum number of allowed attempts. Please try again after 15 minutes or contact your administrator to unlock your account.β
Tip: Your app should be designed to dynamically respond to challenges as they are returned by the server β avoid hardcoding workflows.
π§© Developer Responsibilities
β
Implement all challenge handlers from the SDK (e.g., getPassword, getSMSOTP)
β
Respond to callbacks promptly with user inputs
β
Customize UI/UX for each challenge type
β
Report challenge results back using APIs like setSMSOTP(), setSecretQuestionAnswer(), etc.
β
Ensure error handling and retries where applicable
Updated 3 days ago