Account Blocking

🔍 Definitions

TermMeaning
User LockTemporary restriction applied to the user's identity due to failed authentication attempts. Can retry after cooling period.
Device LockTemporary restriction applied to a specific device. The user can retry on the same device after the cooling period expires.
User BlockPermanent restriction on the user's account after all cooling periods are exhausted. Requires reset (manual or via SDK).
Device BlockPermanent restriction on a specific device. User cannot proceed from that device unless unblocked.

The behavior is driven by the cooling.period.locking.policy which determines whether lock/block is applied at user or device level.


🧊 Cooling Period

What is a Cooling Period?

A cooling period is a system-enforced wait time applied after a set of failed authentication attempts. It is defined by default.cooling.period.list in the REL-ID configuration (e.g., 30,60,90 minutes).

If cooling period is not enabled, user is blocked immediately after retry limit.

Progressive Behavior

REL-ID supports progressive lockouts using a configurable list like 30,60,90. Here's how it works:

Failure CycleLockout DurationResult
1st 5 failures30 minutesTemporarily locked
2nd 5 failures60 minutesLocked again
3rd 5 failures90 minutesLast interval
4th setBlockedRequires resetBlockedUserAccount or admin support

Cooling period behavior for different challenges

Failure TypeCooling ResponseAfter Final Interval
Password / Selfie BiometricsCooling applied → Retry laterUser/Device is BLOCKED
OTP / Email / SMS / Custom ChallengesCooling appliedRemains on last interval, not blocked
LDA (Face ID / Touch ID)Controlled by OSNot affected by SDK cooling config

UI Responsibilities

  • Disable retry actions during cooling period.
  • Read and compare deviceManagementCoolingPeriodEndTimestamp:
    const isCoolingActive = Date.now() < deviceManagementCoolingPeriodEndTimestamp;
  • Show user message: "Too many failed attempts. Please try again at 3:30 PM."
  • Do not attempt auto-retry. Wait for period to expire.

🔓 Unblocking Users Using resetBlockedUserAccount

When is it allowed?

You may call resetBlockedUserAccount() only when the SDK response hasstatusCode = 141.

Status CodeMessageMeaningCan Call Reset?
141Your user/device is blocked, would you like to proceed with reactivation of this device?User is blocked but eligible for self-reset✅ Yes
138User Device is blocked. Kindly contact the admin.User is blocked and must contact admin❌ No
166User is locked. Please try again after REMAINING_TIMEUser is temporarily locked❌ No (wait for cooldown)

Example: React Native

if (statusCode === 141) {
  RdnaClient.resetBlockedUserAccount((res) => {
    if (res.success) {
      // Proceed with login/activation
    } else {
      showMessage("Failed to unblock. Please try again.");
    }
  });
}

Do not call the reset API for any status other than 141.


🔁 API Summary

APIWhen to UseNotes
getUser, authenticateUserAndSignData, setPasswordTo detect status codes and challenge failuresParse statusCode in the callback
onGetRegisteredDeviceDetailsTo check cooling period via timestampInspect deviceManagementCoolingPeriodEndTimestamp
resetBlockedUserAccountWhen statusCode === 141Resets block, allows user to proceed