from django.contrib.auth.backends import BaseBackend from django.contrib.auth.models import User from main.views import decode_access_token class KeycloakBackend(BaseBackend): def authenticate(self, request, token=None): # Ваш код для проверки токена через Keycloak и извлечения информации о пользователе user_info = decode_access_token(token) if user_info: user, created = User.objects.get_or_create(username=user_info['preferred_username'], defaults={'first_name': user_info.get('given_name', ''), 'last_name': user_info.get('family_name', ''), 'email': user_info.get('email', '')}) return user return None def get_user(self, user_id): try: return User.objects.get(pk=user_id) except User.DoesNotExist: return None