Интеграция KeyCloack с DRF (Django Rest Framework)
Я начинающий разработчик DRF. Я пытаюсь интегрировать Keycloak с Django Rest Framework. К сожалению, я не смог найти никакой помощи/блога/учебника в интернете. Если у кого-то здесь есть какая-либо информация по этому поводу, пожалуйста, поделитесь.
С нетерпением ждем вашего ответа. Спасибо
Вы можете использовать Oauth2 API KeyCloack для аутентификации и авторизации пользователей djagno. Это то же самое, что реализовать Sign-in с помощью Google или любого другого провайдера.
Мой любимый пакет для реализации социального аута - python-social-auth, и он даже имеет существующий бэкенд для KeyCloack.
Вот как должна выглядеть конфигурация для Oauth2 против KeyCloack:
Сначала, установите social auth в вашем проекте следующим образом
$ pip install social-auth-app-django
В вашем settings.py
INSTALLED_APPS = (
# ...
'social_django',
# ...
)
AUTHENTICATION_BACKENDS = (
'social_core.backends.keycloak.KeycloakOAuth2',
'django.contrib.auth.backends.ModelBackend',
)
# Add you connection settings here
SOCIAL_AUTH_KEYCLOAK_KEY = 'test-django-oidc'
SOCIAL_AUTH_KEYCLOAK_SECRET = 'a7a41-245e-...'
SOCIAL_AUTH_KEYCLOAK_PUBLIC_KEY = \
'MIIBIjANBxxxdSD'
SOCIAL_AUTH_KEYCLOAK_AUTHORIZATION_URL = \
'https://iam.example.com/auth/realms/voxcloud-staff/protocol/openid-connect/auth'
SOCIAL_AUTH_KEYCLOAK_ACCESS_TOKEN_URL = \
'https://iam.example.com/auth/realms/voxcloud-staff/protocol/openid-connect/token'
В вашем urls.py
urlpatterns = [
...
path('auth/', include('social_django.urls', namespace='social'))
...
]
Затем добавьте это в шаблон страницы входа в систему:
<a href="{% url 'social:begin' 'keycloack' %}?next={{ request.path }}">Login with KeyCloack</a>