Authentication documentation in Rest API - Time & Space Complexity
When working with authentication in REST APIs, it's important to understand how the time to verify users grows as more requests come in.
We want to know how the system handles many login attempts and what affects the speed.
Analyze the time complexity of the following code snippet.
POST /login
Request Body: { username, password }
// Server side
user = findUserByUsername(username)
if user is None:
return error
if verifyPassword(user.passwordHash, password):
return success
else:
return error
This code checks a username and password against stored data to authenticate a user.
Identify the loops, recursion, array traversals that repeat.
- Primary operation: Searching for the user by username in the database.
- How many times: Once per login request.
As the number of users grows, finding a user can take longer if the search is not optimized.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 | About 10 checks to find a user |
| 100 | About 100 checks |
| 1000 | About 1000 checks |
Pattern observation: The time to find a user grows roughly in direct proportion to the number of users if no special search method is used.
Time Complexity: O(n)
This means the time to authenticate grows linearly with the number of users in the system.
[X] Wrong: "Authentication time stays the same no matter how many users exist."
[OK] Correct: If the system searches users one by one, more users mean more time to find the right one.
Understanding how authentication scales helps you design systems that stay fast as they grow, a key skill in real projects.
"What if we used a database index or hash map to find users? How would the time complexity change?"
Practice
Solution
Step 1: Understand authentication role
Authentication is about confirming who the user or client is.Step 2: Differentiate from other API functions
Encryption, speed, and formatting are different concerns, not authentication.Final Answer:
To confirm the identity of a user or client -> Option DQuick Check:
Authentication = Confirm identity [OK]
- Confusing authentication with encryption
- Thinking authentication speeds up API
- Mixing authentication with data formatting
Solution
Step 1: Recall standard header format
The standard way to send tokens is using the 'Authorization' header with 'Bearer' prefix.Step 2: Compare options
Only Authorization: Bearer <token> uses the correct 'Authorization: Bearer <token>' format.Final Answer:
Authorization: Bearer <token> -> Option CQuick Check:
Token header = Authorization: Bearer [OK]
- Using wrong header names like 'Token' or 'Access'
- Omitting 'Bearer' keyword before token
- Placing token in URL instead of header
fetch('https://api.example.com/data', {
headers: { 'Authorization': 'Bearer ' }
})
.then(response => response.status)
.then(status => console.log(status));Solution
Step 1: Understand missing token effect
When the token is missing or empty, the server usually rejects the request as unauthorized.Step 2: Identify HTTP status code for unauthorized
The standard status code for unauthorized access is 401.Final Answer:
401 -> Option AQuick Check:
Missing token = 401 Unauthorized [OK]
- Assuming missing token returns 200 OK
- Confusing 401 with 404 Not Found
- Thinking server returns 500 error
headers: {
'Authorization': 'BearerToken abc123'
}Solution
Step 1: Check Authorization header format
The correct format requires a space between 'Bearer' and the token string.Step 2: Verify the given header
The header uses 'BearerToken' without space, which is incorrect.Final Answer:
Missing space between 'Bearer' and token -> Option AQuick Check:
Bearer and token need space [OK]
- Writing 'BearerToken' as one word
- Using wrong header name like 'Auth'
- Sending token in URL instead of header
Solution
Step 1: Identify secure token usage
Best practice is to require a valid token in the 'Authorization' header to confirm identity securely.Step 2: Evaluate other options
Sending username/password every time is insecure; IP filtering is limited; URL tokens risk exposure.Final Answer:
Require clients to send a valid token in the 'Authorization: Bearer <token>' header for access -> Option BQuick Check:
Token in Authorization header = secure access [OK]
- Sending credentials in every request body
- Exposing tokens in URL parameters
- Relying only on IP filtering for security
Ready to prove it?
Pass the test and this pattern moves unknown
