# Keycloak Manager
[](https://pypi.org/project/keycloak-manager)
[](https://pypi.org/project/keycloak-manager)
[](https://pypi.org/project/keycloak-manager/)
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
```bash
# Using Poetry (recommended)
poetry add keycloak-manager
# Using pip
pip install keycloak-manager
```
## Quick Start
```python
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:
```bash
git clone https://github.com/anqorithm/keycloak-manager.git
cd keycloak-manager
```
2. Install dependencies:
```bash
poetry install
```
3. Run tests:
```bash
poetry run pytest
```
## Testing
The package includes comprehensive tests. Run them using:
```bash
poetry run pytest -v
```
For development, you can use the example script:
```bash
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
```python
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
```python
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](https://github.com/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
Raw data
{
"_id": null,
"home_page": "https://github.com/anqorithm/keycloak-manager",
"name": "keycloak-manager",
"maintainer": null,
"docs_url": null,
"requires_python": "<4.0,>=3.12",
"maintainer_email": null,
"keywords": "keycloak, authentication, user-management, tokens",
"author": "Abdullah Alqahtani",
"author_email": "abdullah@anqorithm.com",
"download_url": "https://files.pythonhosted.org/packages/45/21/6582b35c11a272cc726177639bcbc2a6d8cd0723786c409c5f85f1ddf60e/keycloak_manager-0.1.3.tar.gz",
"platform": null,
"description": "# Keycloak Manager\n\n[](https://pypi.org/project/keycloak-manager)\n[](https://pypi.org/project/keycloak-manager)\n[](https://pypi.org/project/keycloak-manager/)\n\nA 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.\n\n## Features\n\n- \ud83d\udd10 User Management (Create, Update, Delete)\n- \ud83c\udfab Token Generation and Validation\n- \ud83d\udc64 User Authentication\n- \ud83d\udd11 Password Management\n- \ud83d\udcdd Custom Attributes Support\n- \ud83d\udd04 Realm Role Management\n- \ud83d\udcca Token Decoding and Verification\n\n## Installation\n\n```bash\n# Using Poetry (recommended)\npoetry add keycloak-manager\n\n# Using pip\npip install keycloak-manager\n```\n\n## Quick Start\n\n```python\nfrom keycloak_manager import KeycloakManager\n\n# Initialize the manager\nmanager = KeycloakManager(\n base_url=\"http://localhost:8080\",\n realm=\"YourRealm\",\n admin_username=\"admin\",\n admin_password=\"admin\",\n client_id=\"your-client\",\n client_secret=\"your-secret\"\n)\n\n# Create a new user\nuser_id = manager.create_user(\n username=\"abdullah\",\n email=\"abdullah@anqorithm.com\",\n first_name=\"John\",\n last_name=\"Doe\",\n enabled=True,\n email_verified=True,\n realm_roles=[\"user\"]\n)\n\n# Set user password\nmanager.set_user_password(user_id, \"secure_password\")\n\n# Get user token\ntoken_response = manager.get_user_token(\n username=\"abdullah\",\n password=\"secure_password\"\n)\n```\n\n## Configuration\n\nThe KeycloakManager requires the following configuration:\n\n- `base_url`: Keycloak server URL\n- `realm`: Keycloak realm name\n- `admin_username`: Admin username\n- `admin_password`: Admin password\n- `client_id`: Client ID\n- `client_secret`: Client secret (optional)\n\n## Development Setup\n\n1. Clone the repository:\n\n```bash\ngit clone https://github.com/anqorithm/keycloak-manager.git\ncd keycloak-manager\n```\n\n2. Install dependencies:\n\n```bash\npoetry install\n```\n\n3. Run tests:\n\n```bash\npoetry run pytest\n```\n\n## Testing\n\nThe package includes comprehensive tests. Run them using:\n\n```bash\npoetry run pytest -v\n```\n\nFor development, you can use the example script:\n\n```bash\npython app.py\n```\n\n## Project Structure\n\n```\nkeycloak_manager/\n\u251c\u2500\u2500 keycloak_manager/\n\u2502 \u251c\u2500\u2500 __init__.py\n\u2502 \u251c\u2500\u2500 manager.py # Main manager class\n\u2502 \u2514\u2500\u2500 models.py # Pydantic models\n\u251c\u2500\u2500 tests/\n\u2502 \u2514\u2500\u2500 test_manager.py\n\u251c\u2500\u2500 app.py # Example usage\n\u251c\u2500\u2500 pyproject.toml\n\u2514\u2500\u2500 README.md\n```\n\n## Models\n\n### UserCreate\n\n```python\nclass UserCreate(BaseModel):\n username: str\n email: EmailStr\n first_name: str\n last_name: str\n enabled: bool = True\n email_verified: bool = False\n realm_roles: List[str]\n attributes: Dict[str, List[str]] = Field(default_factory=dict)\n```\n\n### TokenResponse\n\n```python\nclass TokenResponse(BaseModel):\n access_token: str\n expires_in: int\n refresh_expires_in: int\n refresh_token: str\n token_type: str\n session_state: str\n scope: str\n```\n\n## Contributing\n\n1. Fork the repository\n2. Create a feature branch (`git checkout -b feature/amazing-feature`)\n3. Commit your changes (`git commit -m 'Add amazing feature'`)\n4. Push to the branch (`git push origin feature/amazing-feature`)\n5. Open a Pull Request\n\n## License\n\nThis project is licensed under the MIT License - see the LICENSE file for details.\n\n## Author\n\n**Abdullah Alqahtani** \nEmail: abdullah@anqorithm.com \nGitHub: [@anqorithm](https://github.com/anqorithm)\n\n## Acknowledgments\n\n- Keycloak Team for their excellent authentication server\n- Pydantic for data validation\n- FastAPI community for inspiration\n\n## Support\n\nFor support, please open an issue in the GitHub repository or contact the maintainers at abdullah@anqorithm.com\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "A simple Python package to work with Keycloak users and login systems",
"version": "0.1.3",
"project_urls": {
"Homepage": "https://github.com/anqorithm/keycloak-manager",
"Repository": "https://github.com/anqorithm/keycloak-manager"
},
"split_keywords": [
"keycloak",
" authentication",
" user-management",
" tokens"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "cd023194c4706760c7a184f630540df7311d31299cf80b4d20d2ae366bb782d5",
"md5": "bb0dad5b974b705c215ea8068382f168",
"sha256": "3e25f9b606c89f33cc5ee0cb7ffae396a1cac32d6d1739b0e36f3d42b7f3af49"
},
"downloads": -1,
"filename": "keycloak_manager-0.1.3-py3-none-any.whl",
"has_sig": false,
"md5_digest": "bb0dad5b974b705c215ea8068382f168",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "<4.0,>=3.12",
"size": 6539,
"upload_time": "2024-12-23T10:29:30",
"upload_time_iso_8601": "2024-12-23T10:29:30.485241Z",
"url": "https://files.pythonhosted.org/packages/cd/02/3194c4706760c7a184f630540df7311d31299cf80b4d20d2ae366bb782d5/keycloak_manager-0.1.3-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "45216582b35c11a272cc726177639bcbc2a6d8cd0723786c409c5f85f1ddf60e",
"md5": "3b54fb031d6ef31026f3c94795c02da9",
"sha256": "5d3a5c9e4eea74e970793b8f674cd717e7e952c25cb39b32739f2729b7943242"
},
"downloads": -1,
"filename": "keycloak_manager-0.1.3.tar.gz",
"has_sig": false,
"md5_digest": "3b54fb031d6ef31026f3c94795c02da9",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<4.0,>=3.12",
"size": 5482,
"upload_time": "2024-12-23T10:29:32",
"upload_time_iso_8601": "2024-12-23T10:29:32.420874Z",
"url": "https://files.pythonhosted.org/packages/45/21/6582b35c11a272cc726177639bcbc2a6d8cd0723786c409c5f85f1ddf60e/keycloak_manager-0.1.3.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-12-23 10:29:32",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "anqorithm",
"github_project": "keycloak-manager",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"lcname": "keycloak-manager"
}