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

Keycloak 22.0.3通过UI为新创建用户设置密码时报错,但实际可登录的异常问题求助

Keycloak 22.0.3通过UI为新创建用户设置密码时报错,但实际可登录的异常问题求助

我部署的Keycloak遇到了一个奇怪的问题:当我通过UI创建纯Keycloak本地用户(没有集成LDAP)并尝试设置密码时,操作会失败并弹出错误提示。但奇怪的是,容器日志和数据库里完全找不到相关错误信息,我完全摸不着头绪。

下面是我的Docker Compose配置(已将真实URL替换为MY-URL):

version: "3.9"

services:
  keycloak:
    image: quay.io/keycloak/keycloak:22.0.3
    restart: "always"
    environment:
      KEYCLOAK_ADMIN: admin
      KEYCLOAK_ADMIN_PASSWORD: ${ADMIN_PASSWORD}
      KC_HOSTNAME_ADMIN_URL: MY_URL
      KC_HOSTNAME_STRICT: false
      #KC_HOSTNAME_PORT: 443
      KC_HOSTNAME_STRICT_HTTPS: false
      KC_PROXY: edge
      PROXY_ADDRESS_FORWARDING: true
    volumes:
      - /home/lyxas/certs:/etc/certs
    labels:
      - "traefik.enable=true"
      - "traefik.docker.network=traefik_public"
      # HTTP
      - "traefik.http.routers.keycloak-http.entryPoints=http"
      - "traefik.http.routers.keycloak-http.rule=Host(`MY_URL`)"
      - "traefik.http.middlewares.keycloak-redirect-https.redirectscheme.scheme=https"
      - "traefik.http.routers.keycloak-http.middlewares=keycloak-redirect-https"
      # HTTPS
      - "traefik.http.routers.keycloak-https.entrypoints=https"
      - "traefik.http.routers.keycloak-https.rule=Host(`MY_URL`)"
      - "traefik.http.routers.keycloak-https.tls=true"
      - "traefik.http.services.keycloak-https.loadbalancer.server.port=8080"
      - "traefik.http.routers.keycloak-https.service=keycloak-https"
      - traefik.http.routers.keycloak-https.middlewares=waf@docker
    command: "start --hostname=MY_URL --db=postgres --features=token-exchange --db-url=jdbc:postgresql://db:5432/${DATABASE_DATABASE} --db-username=${DATABASE_USER} --db-password=${DATABASE_PASSWORD} --https-key-store-file=/etc/certs/MY_URL-keystore.jks --https-key-store-password=${KEYSTORE_PASSWORD} --http-enabled=true --log-level=debug"
    networks:
      - keycloak
      - traefik-network
  db:
    image: postgres:16.0-alpine3.18
    restart: always
    environment:
      POSTGRES_PASSWORD: '${DATABASE_PASSWORD}'
      POSTGRES_USER: '${DATABASE_USER}'
      POSTGRES_DB: ${DATABASE_DATABASE}
      TZ: 'Europe/Paris'
      PGTZ: 'Europe/Paris'
    command: [ "postgres", "-c", "log_statement=all" ]
    networks:
      - keycloak
    volumes:
      - '/home/lyxas/docker_data/keycloak/db:/var/lib/postgresql/data'

networks:
  keycloak:
  traefik-network:
    external:
      name: traefik_public

目前Keycloak容器和数据库的通信看起来是正常的,我的Docker版本是24.0.5, build ced0996。

设置密码报错后,我刷新了UI页面,尝试用这个创建好的用户登录,一开始发现登录失败,但后来我发现——虽然设置密码时显示错误,但实际上密码已经生效了,我可以正常用该用户登录。

我已经尝试过把日志级别调到debug,但还是找不到任何相关错误信息;也试过降级Keycloak到21.1.2版本,结果还是遇到同样的问题。

有没有人遇到过类似的情况?恳请大家帮忙分析一下问题所在,谢谢!

备注:内容来源于stack exchange,提问作者Lyxas

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.21 12:44:40