Multi-LLM-API-Gateway / docs /user_handler.py.md
Alibrown's picture
Upload 36 files
3060aa0 verified

Secure User Authentication and Session Management

Overview

This module, user_handler.py, is a standalone component for handling user authentication, session management, and security. It provides a secure, yet easy-to-use, system for managing user logins and protecting against common attacks like brute-force attempts and session fixation.

It is designed to be a direct Python equivalent of a user management class you might find in a web application built with a traditional framework, offering similar functionality and a focus on security.


Core Security Features

  • Password Hashing: Passwords are not stored in plain text. The module uses passlib with pbkdf2_sha256 for robust, salted password hashing, making it nearly impossible to retrieve the original password from the database.
  • Session Fixation Prevention: The login method regenerates the session ID after a successful authentication, ensuring that an attacker cannot hijack a pre-existing session.
  • Brute-Force Protection: The system tracks failed login attempts. After a configurable number of failures (e.g., 5 attempts), it automatically locks the user's account to prevent further brute-force attacks.
  • Session Validation: Sessions are not just validated by an ID. The module also checks the user's IP address and user agent to ensure the session hasn't been hijacked.
  • Data Storage: A simple SQLite database is used as a placeholder. In a production environment, this would be replaced by a more robust and scalable solution like PostgreSQL.

Module Components

  1. Database Class (Placeholder): A simple wrapper for SQLite to simulate database interactions. This is where you would integrate a proper ORM or a more powerful database driver in a production application.

  2. Security Class: A static class responsible for core security functions. It handles password hashing and verification using passlib and includes a method to simulate session ID regeneration.

  3. UserHandler Class: The main class for handling user-related logic. It contains methods for:

    • login(username, password, request_data): Verifies user credentials and establishes a secure session.
    • logout(): Terminates the user's session.
    • is_logged_in(): Checks if a user has an active session.
    • is_admin(): Determines if the logged-in user has administrator privileges.
    • validate_session(): Checks if the session is valid based on request details.
    • lock_account(): Manually locks a user's account.
    • increment_failed_attempts(): Increments the failed login counter and locks the account if a threshold is reached.

Example Usage

The if __name__ == "__main__": block at the end of the file provides a complete example of how to use the module:

  1. Setup: Initializes the database and creates the necessary tables.
  2. User Registration: Demonstrates how to create a regular user and an admin user with securely hashed passwords.
  3. Successful Login: Shows a successful login attempt, which creates a new session.
  4. Logout: Illustrates how to terminate the session.
  5. Brute-Force Protection Test: Simulates multiple failed login attempts to demonstrate the account-locking mechanism.
  6. Account Reset: Shows how to manually reset failed attempts to re-enable an account.

This module provides a robust and well-documented foundation for building a secure and reliable user authentication system.