Skip to main content

A simple Python package to work with Keycloak users and login systems

Project description

Keycloak Manager

PyPI version Python Versions License Build Status Downloads

A simple Python package to work with Keycloak users and login systems. Makes it easy to create and manage users, handle logins, and work with user tokens - all through clean and easy-to-use Python code.

Features

  • 🔐 User Management (Create, Update, Delete)
  • 🎫 Token Generation and Validation
  • 👤 User Authentication
  • 🔑 Password Management
  • 📝 Custom Attributes Support
  • 🔄 Realm Role Management
  • 📊 Token Decoding and Verification

Installation

# Using Poetry (recommended)
poetry add keycloak-manager

# Using pip
pip install keycloak-manager

Quick Start

from keycloak_manager import KeycloakManager

# Initialize the manager
manager = KeycloakManager(
    base_url="http://localhost:8080",
    realm="YourRealm",
    admin_username="admin",
    admin_password="admin",
    client_id="your-client",
    client_secret="your-secret"
)

# Create a new user
user_id = manager.create_user(
    username="abdullah",
    email="abdullah@anqorithm.com",
    first_name="John",
    last_name="Doe",
    enabled=True,
    email_verified=True,
    realm_roles=["user"]
)

# Set user password
manager.set_user_password(user_id, "secure_password")

# Get user token
token_response = manager.get_user_token(
    username="abdullah",
    password="secure_password"
)

Configuration

The KeycloakManager requires the following configuration:

  • base_url: Keycloak server URL
  • realm: Keycloak realm name
  • admin_username: Admin username
  • admin_password: Admin password
  • client_id: Client ID
  • client_secret: Client secret (optional)

Development Setup

  1. Clone the repository:
git clone https://github.com/anqorithm/keycloak-manager.git
cd keycloak-manager
  1. Install dependencies:
poetry install
  1. Run tests:
poetry run pytest

Testing

The package includes comprehensive tests. Run them using:

poetry run pytest -v

For development, you can use the example script:

python app.py

Project Structure

keycloak_manager/
├── keycloak_manager/
│   ├── __init__.py
│   ├── manager.py     # Main manager class
│   └── models.py      # Pydantic models
├── tests/
│   └── test_manager.py
├── app.py            # Example usage
├── pyproject.toml
└── README.md

Models

UserCreate

class UserCreate(BaseModel):
    username: str
    email: EmailStr
    first_name: str
    last_name: str
    enabled: bool = True
    email_verified: bool = False
    realm_roles: List[str]
    attributes: Dict[str, List[str]] = Field(default_factory=dict)

TokenResponse

class TokenResponse(BaseModel):
    access_token: str
    expires_in: int
    refresh_expires_in: int
    refresh_token: str
    token_type: str
    session_state: str
    scope: str

Contributing

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

License

This project is licensed under the MIT License - see the LICENSE file for details.

Author

Abdullah Alqahtani
Email: abdullah@anqorithm.com
GitHub: @anqorithm

Acknowledgments

  • Keycloak Team for their excellent authentication server
  • Pydantic for data validation
  • FastAPI community for inspiration

Support

For support, please open an issue in the GitHub repository or contact the maintainers at abdullah@anqorithm.com

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

keycloak_manager-0.1.2.tar.gz (5.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

keycloak_manager-0.1.2-py3-none-any.whl (6.6 kB view details)

Uploaded Python 3

File details

Details for the file keycloak_manager-0.1.2.tar.gz.

File metadata

  • Download URL: keycloak_manager-0.1.2.tar.gz
  • Upload date:
  • Size: 5.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.2 CPython/3.12.0 Linux/5.15.167.4-microsoft-standard-WSL2

File hashes

Hashes for keycloak_manager-0.1.2.tar.gz
Algorithm Hash digest
SHA256 1f48744e059b6711aeb9533e4b17bd06380713f9b82a8a98e7ba2eeadb073632
MD5 91b031d62fbc5e8fabbef473d5b4a9b3
BLAKE2b-256 ab4f2f087d7aa2387600dc3c7dd88b53d83347758dfd2f8ac1e25e2bd98b85c4

See more details on using hashes here.

File details

Details for the file keycloak_manager-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: keycloak_manager-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 6.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.2 CPython/3.12.0 Linux/5.15.167.4-microsoft-standard-WSL2

File hashes

Hashes for keycloak_manager-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 962908d0bbbc40b83c6813eb92f965fca1adb8c95973e0dfb69bd307b2624d2e
MD5 3edd038f595d939c23ac0fc54801ad9e
BLAKE2b-256 219e15b3ad7ab6ea0d6a744277bcbe48eb34165d8aae207e40304479f89c0f2f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page