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

Django Allauth集成Keycloak认证时出现“连接被拒绝”错误

问题解决:Django-allauth集成Keycloak(OpenID Connect)连接拒绝错误

错误核心原因

Connection refused 说明Django应用无法建立到Keycloak服务器的连接,问题出在服务状态或配置参数错误:

  1. Keycloak未启动,或运行端口与Django配置的目标端口不匹配(错误中显示尝试连接localhost:8081)
  2. OpenID配置URL格式错误,且路径填写不符合django-allauth的要求

修复步骤

1. 确认Keycloak服务状态

  • 检查Keycloak是否正在运行,确认其监听端口(默认是8080,若修改过端口需对应调整)
  • 手动访问 http://localhost:端口号/realms/customercloud/.well-known/openid-configuration,验证Keycloak的OpenID配置接口是否可正常访问

2. 修正SOCIALACCOUNT_PROVIDERS配置

你的配置存在两处关键错误,修正后如下:

SOCIALACCOUNT_PROVIDERS = {
    "openid_connect": {
        "APP": {
            "provider_id": "keycloak",
            "name": "Keycloak",
            "client_id": "myclient",
            "secret": "********************",
            "settings": {
                # 修正:移除localhost后多余的冒号,填写正确端口,仅需到realm根路径
                "server_url": "http://localhost:8080/realms/customercloud/",
                "client_id": "myclient",
                # 确保与Keycloak客户端配置的Valid Redirect URIs完全一致
                "redirect_uri": "http://localhost:8000/accounts/openid_connect/callback/",
            },
        }
    }
}
  • server_url:只需填写Keycloak的realm根URL,django-allauth会自动拼接.well-known/openid-configuration路径获取配置
  • 端口号:必须与Keycloak实际运行的端口一致
  • redirect_uri:需和Keycloak客户端后台设置的Valid Redirect URIs完全匹配

3. 同步Keycloak客户端配置

在Keycloak后台的customercloud realm中,找到myclient客户端:

  • 将Access Type设置为confidential(因使用了client secret)
  • 在Valid Redirect URIs中添加Django的回调地址(与配置中的redirect_uri一致)
  • 确保Standard Flow Enabled处于开启状态(用于OpenID Connect授权码流程)

验证修复

重启Django应用后,再次点击“Login with Keycloak”链接,应能正常跳转到Keycloak登录页面。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 10:57:08