import logging from django.http import HttpResponse from django.views.decorators.http import require_http_methods from django.shortcuts import redirect from django.conf import settings from keycloak import KeycloakOpenID logger = logging.getLogger(__name__) def keycloak_login(request): # Инициализация клиента Keycloak с конфигурационными данными из настроек Django. keycloak_openid = KeycloakOpenID( server_url=settings.KEYCLOAK_CONFIG['SERVER_URL'], client_id=settings.KEYCLOAK_CONFIG['CLIENT_ID'], realm_name=settings.KEYCLOAK_CONFIG['REALM'], client_secret_key=settings.KEYCLOAK_CONFIG['CLIENT_SECRET'] ) # Установка URL для перенаправления пользователя после аутентификации в Keycloak. redirect_uri = settings.KEYCLOAK_CONFIG['CALLBACK_URL'] # Получение URL для аутентификации пользователя через Keycloak. auth_url = keycloak_openid.auth_url(redirect_uri=redirect_uri) # Логгирование успешной обработки запроса. logger.info('Запрос успешно обработан') # Перенаправление пользователя на страницу аутентификации Keycloak. return redirect(auth_url) @require_http_methods(["GET"]) def keycloak_redirect(request): # Извлечение кода авторизации из параметров запроса. authorization_code = request.GET.get('code') if authorization_code: # Если код авторизации получен, продолжается процесс обмена токенами. print(authorization_code) logger.info(' 2 Запрос успешно обработан') return HttpResponse("Authorization code received.") else: # Если код авторизации отсутствует, возвращается ошибка. return HttpResponse("Authorization code not found.", status=400)