我是一名初级 DRF 开发人员。我正在尝试将 Keycloak 与 Django Rest Framework 集成。不幸的是,我无法在线找到任何类型的帮助/博客/教程。
您可以使用KeyCloack的Oauth2 API对您的djagno用户进行身份验证和授权。与使用 Google 或任何其他提供商登录相同。
我最喜欢的实现社交身份验证的包是 python-social-auth,它甚至有一个现有的 KeyCloack 后端。
以下是针对 KeyCloack 的 Oauth2 配置应如下所示:
$ 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>
你找到解决办法了吗???