/
OTP API Throttling
OTP API Throttling
Overview
We need to restrict number of OTP message generated for particular e-mail or mobile.
Purpose is simply to avoid misuse through
Approach 1
Create one table, otp_throttling with columns (type, key, count)
Each time generate OTP is called:
- Check if user exists → throw exception - user already exists with Mobile/Email.
- Check if there is an entry with same type, userkey in the table
- if no entry, then add entry with TTL as per configuration.
- if entry is found then, check if threshold is already reached.
- if threshold is reached → Generate error with message, that user has reached max OTP generation, and is blocked for 24 hours.
- If threshold is not reached → increment the counter as well as ttl, and proceed to OTP generation.
Pros:
- Easy to implement and clean solution, as both data are for seperate purpose
- We can use ttl at table level for both tables, and row will get deleted automatically.
Cons:
- Additional data storage.
Approach 2
It is same as approach 1, except existing OTP table should be used.
Pros:
- No additional table will be required
Cons:
- Both data will be stored in same table.
- Need to use TTL at column level
Open Questions
- 5 OTP in 24 hours limit is from first generation of otp or from last usage. i.e. say first generation was done at 09:00 AM → till 09:00 AM next morning - user cannot generate more than 5 OTP, or each time OTP is generated we update the timestamp, say 5th otp was generated at 05:00PM - then user cannot generate OTP till 05:00 PM next day.
, multiple selections available,
Related content
Design for verify OTP
Design for verify OTP
More like this
Design for One time password (OTP)
Design for One time password (OTP)
More like this
Lock Service
Lock Service
More like this
Tech Design for Sync Module
Tech Design for Sync Module
More like this
Local Notification Configuration Data Structure
Local Notification Configuration Data Structure
More like this
Update Profile fields - E-Mail or Phone
Update Profile fields - E-Mail or Phone
More like this