# Garpix Keycloak
Keycloak uth module for Django/DRF projects. Part of GarpixCMS.
Used packages:
* [django rest framework](https://www.django-rest-framework.org/api-guide/authentication/)
* etc; see setup.py
## Quickstart
Install with pip:
```bash
pip install garpix_keycloak
```
Add the `garpix_keycloak` to your `INSTALLED_APPS`:
```python
# settings.py
# ...
INSTALLED_APPS = [
# ...
'garpix_keycloak',
]
```
Add `KeycloakUserMixin` to your `User` model:
```python
from django.contrib.auth.models import AbstractUser
from garpix_keycloak.mixins import KeycloakUserMixin
class User(AbstractUser, KeycloakUserMixin):
class Meta:
verbose_name = 'Пользователь'
verbose_name_plural = 'Пользователи'
def __str__(self):
return self.username
```
Add `KeycloakAuthMiddleware` to `MIDDLEWARE` settings after `django.contrib.auth.middleware.AuthenticationMiddleware`:
```python
# settings.py
MIDDLEWARE = [
# ...
'django.contrib.sessions.middleware.SessionMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'garpix_keycloak.middlewares.KeycloakAuthMiddleware',
]
```
Add authentication backend:
```python
AUTHENTICATION_BACKENDS = [
# ...
'garpix_keycloak.backends.KeycloakAuthenticationBackend'
]
```
Add keycloak parameters to `settings.py`:
```python
# settings.py
KEYCLOAK = {
'SERVER_URL': 'your_server_url',
'REALM': 'your_realm',
'CLIENT_ID': 'your_client_id',
'CLIENT_SECRET_KEY': 'your_client_secret_key'
}
```
Use `get_keycloak_url` from `KeycloakService` to generate keycloak log in link.
`garpix_keycloak` creates `User` model instance, using `create_keycloak_user` class method.
You can override it if you need some customization in your project.
Enjoy!
# Changelog
See [CHANGELOG.md](CHANGELOG.md).
# Contributing
See [CONTRIBUTING.md](CONTRIBUTING.md).
# License
[MIT](LICENSE)
---
Developed by Garpix / [https://garpix.com](https://garpix.com)
Raw data
{
"_id": null,
"home_page": "https://github.com/garpixcms/garpix_keycloak",
"name": "garpix-keycloak",
"maintainer": "",
"docs_url": null,
"requires_python": "",
"maintainer_email": "",
"keywords": "",
"author": "Garpix LTD",
"author_email": "info@garpix.com",
"download_url": "https://files.pythonhosted.org/packages/07/cf/619f6a362ac5316584a4274e747d5a6834c631b786b47b101af3ad554f4f/garpix_keycloak-1.2.1.tar.gz",
"platform": null,
"description": "# Garpix Keycloak\n\nKeycloak uth module for Django/DRF projects. Part of GarpixCMS.\n\nUsed packages: \n\n* [django rest framework](https://www.django-rest-framework.org/api-guide/authentication/)\n* etc; see setup.py\n\n## Quickstart\n\nInstall with pip:\n\n```bash\npip install garpix_keycloak\n```\n\nAdd the `garpix_keycloak` to your `INSTALLED_APPS`:\n\n```python\n# settings.py\n\n# ...\nINSTALLED_APPS = [\n # ...\n 'garpix_keycloak',\n]\n```\n\nAdd `KeycloakUserMixin` to your `User` model:\n\n```python\nfrom django.contrib.auth.models import AbstractUser\n\nfrom garpix_keycloak.mixins import KeycloakUserMixin\n\n\nclass User(AbstractUser, KeycloakUserMixin):\n\n class Meta:\n verbose_name = '\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c'\n verbose_name_plural = '\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438'\n\n def __str__(self):\n return self.username\n\n```\n\nAdd `KeycloakAuthMiddleware` to `MIDDLEWARE` settings after `django.contrib.auth.middleware.AuthenticationMiddleware`:\n\n```python\n# settings.py\n\n\nMIDDLEWARE = [\n # ...\n 'django.contrib.sessions.middleware.SessionMiddleware',\n 'django.contrib.auth.middleware.AuthenticationMiddleware',\n 'garpix_keycloak.middlewares.KeycloakAuthMiddleware',\n]\n```\n\nAdd authentication backend:\n\n```python\nAUTHENTICATION_BACKENDS = [\n # ...\n 'garpix_keycloak.backends.KeycloakAuthenticationBackend'\n]\n```\n\nAdd keycloak parameters to `settings.py`:\n\n```python\n# settings.py\n\n\nKEYCLOAK = {\n 'SERVER_URL': 'your_server_url',\n 'REALM': 'your_realm',\n 'CLIENT_ID': 'your_client_id',\n 'CLIENT_SECRET_KEY': 'your_client_secret_key'\n}\n\n```\n\nUse `get_keycloak_url` from `KeycloakService` to generate keycloak log in link.\n\n`garpix_keycloak` creates `User` model instance, using `create_keycloak_user` class method. \nYou can override it if you need some customization in your project.\n\nEnjoy!\n\n\n# Changelog\n\nSee [CHANGELOG.md](CHANGELOG.md).\n\n# Contributing\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md).\n\n# License\n\n[MIT](LICENSE)\n\n---\n\nDeveloped by Garpix / [https://garpix.com](https://garpix.com)\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "",
"version": "1.2.1",
"project_urls": {
"Homepage": "https://github.com/garpixcms/garpix_keycloak"
},
"split_keywords": [],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "01ac92be7cdb89deb6a920ee27a8e4f5cb843095aff0fd95811df29877892cae",
"md5": "ef7b40aa72b2a521fa605470558f4aac",
"sha256": "4bd756fe1253f70c2d552f3c40878671fe6095e3ea42098e7233d5f7a6425956"
},
"downloads": -1,
"filename": "garpix_keycloak-1.2.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "ef7b40aa72b2a521fa605470558f4aac",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 12872,
"upload_time": "2023-03-22T15:15:56",
"upload_time_iso_8601": "2023-03-22T15:15:56.465049Z",
"url": "https://files.pythonhosted.org/packages/01/ac/92be7cdb89deb6a920ee27a8e4f5cb843095aff0fd95811df29877892cae/garpix_keycloak-1.2.1-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "07cf619f6a362ac5316584a4274e747d5a6834c631b786b47b101af3ad554f4f",
"md5": "1d4b84da76219560b9104ac945aff420",
"sha256": "f9e1ae1654e7abc580958ea7f13de08e243eba54175068b166afb646e6a77e1f"
},
"downloads": -1,
"filename": "garpix_keycloak-1.2.1.tar.gz",
"has_sig": false,
"md5_digest": "1d4b84da76219560b9104ac945aff420",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 8771,
"upload_time": "2023-03-22T15:15:59",
"upload_time_iso_8601": "2023-03-22T15:15:59.041198Z",
"url": "https://files.pythonhosted.org/packages/07/cf/619f6a362ac5316584a4274e747d5a6834c631b786b47b101af3ad554f4f/garpix_keycloak-1.2.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-03-22 15:15:59",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "garpixcms",
"github_project": "garpix_keycloak",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"lcname": "garpix-keycloak"
}