You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django Rest集成Keycloak遇PKCE code verifier未指定错误求助

解决Keycloak + dj-rest-auth PKCE code verifier未指定错误

这个错误的核心是Keycloak启用了PKCE(授权码流程的安全增强机制),但你的登录请求没有携带code_verifier参数,导致Keycloak拒绝发放access token。以下是具体解决步骤:

1. 确认Keycloak客户端配置

  • 登录Keycloak控制台,找到目标客户端:
    • 切换到Settings标签,确认Access Type设置为confidential或public(public模式下PKCE为强制要求)
    • 切换到Advanced标签,在Proof Key for Code Exchange Code Challenge Method中选择S256(推荐)或允许plain
    • 确保Valid Redirect URIs配置正确,与后端回调地址完全匹配

2. 调整后端代码

需要自定义序列化器和登录视图,让后端接收并传递code_verifier参数给Keycloak:

自定义登录序列化器

from rest_framework import serializers
from dj_rest_auth.registration.serializers import SocialLoginSerializer

class KeycloakLoginSerializer(SocialLoginSerializer):
    # 添加code_verifier字段,前端必须传递该参数
    code_verifier = serializers.CharField(required=True)

    def get_auth_params(self, request):
        # 将code_verifier加入认证参数列表
        auth_params = super().get_auth_params(request)
        auth_params['code_verifier'] = self.validated_data.get('code_verifier')
        return auth_params

自定义登录视图

from dj_rest_auth.registration.views import SocialLoginView
from allauth.socialaccount.providers.keycloak.provider import KeycloakProvider
from .serializers import KeycloakLoginSerializer

class KeycloakLoginView(SocialLoginView):
    serializer_class = KeycloakLoginSerializer
    adapter_class = KeycloakProvider.get_adapter_class()

配置URL路由

将自定义视图添加到项目的urls.py中:

from django.urls import path
from .views import KeycloakLoginView

urlpatterns = [
    # ...其他路由
    path('auth/keycloak/login/', KeycloakLoginView.as_view(), name='keycloak_login'),
]

3. 前端请求要求

前端需完整执行PKCE授权流程:

  1. 发起授权请求到Keycloak时,生成code_verifier和对应的code_challenge(使用S256哈希算法),将code_challenge和code_challenge_method=S256作为参数传递给Keycloak授权端点
  2. 拿到Keycloak返回的code后,调用后端登录接口时,必须同时传递code和code_verifier两个参数

4. 依赖版本检查

确保dj-rest-auth、django-allauth为最新稳定版,旧版本可能存在PKCE支持缺陷:

pip install --upgrade dj-rest-auth django-allauth

内容的提问来源于stack exchange,提问作者Vishnu Puthanalakkal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 23:37:45