Helper classes for keycloak authentication in Django and FastAPI
Project description
keycloak auth utils
Installation
1. Django/DRF
pip install git+https://github.com/ottuco/keycloak-auth-utils#egg=keycloak-utils[django]
2. FastAPI
pip install git+https://github.com/ottuco/keycloak-auth-utils#egg=keycloak-utils[fastapi]
Usage
1. Django/DRF
# authentication.py
from django.contrib.auth import get_user_model
from keycloak_utils.authentication.rest_framework import BaseDRFKCAuthentication
User = get_user_model()
class KeycloakDRFAuthentication(BaseDRFKCAuthentication):
kc_host = "http://localhost:8080"
kc_realm = "your-realm-nae"
kc_algorithms = ["RS256"]
kc_audience = "account"
def get_or_create_user(self, claims: dict):
# override this method to get or create user
# return User.objects.get_or_create(email=claims["email"])
return user_instance
# views.py
from rest_framework.views import APIView
class TestView(APIView):
authentication_classes = [KeycloakDRFAuthentication] # Add authentication class here
def get(self, request):
return Response({"message": "Hello, world!"})
2. FastAPI
# middlewares.py
import typing
from fastapi import Request
from keycloak_utils.authentication.fastapi import BaseFastAPIKCAuthentication
class AuthenticationMiddleware(BaseFastAPIKCAuthentication):
kc_host = "http://localhost:8080"
kc_realm = "your-realm-nae"
kc_algorithms = ["RS256"]
kc_audience = "account"
def post_process_claims(
self,
claims: typing.Optional[dict],
request: Request,
) -> Request:
# do something with `claims` here
return request
# main.py
from fastapi import FastAPI
app = FastAPI()
app.add_middleware(AuthenticationMiddleware) # Add middleware here
@app.get("/")
def read_root():
return {"Hello": "World"}
Test
# Install the dependencies
pip install .[test]
# Run tests
python -m pytest
Release
# do a dry-run first -
bump2version --dry-run --verbose [major|minor|patch]
# if everything looks good, run the following command to release
bump2version --verbose [major|minor|patch]
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-utils-0.2.0.tar.gz
(7.1 kB
view hashes)
Built Distribution
Close
Hashes for keycloak_utils-0.2.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8ebf4634b04be9bbf4a147fbf2d8ee2cc0c0c98fa04d75b7f9227b25b14d3155 |
|
MD5 | 76ae7bb532df5437f52282fbc6375b36 |
|
BLAKE2b-256 | 0ff4bae5b4df2ce172ce84074a703a3b0affeaa28102886ba59431b57c859708 |