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

无法从Keyrock获取X-Auth-Token:身份验证失败求助

问题:Keyrock身份验证返回401错误(凭证无误但无法获取Token)

我正在做一个大学项目,通过.http文件直接向Keyrock发送请求以获取默认管理员的X-Auth-Token,请求参数无误,且已在MySQL数据库中确认该管理员用户存在,但始终返回401错误。

请求内容

POST http://localhost:3005/v1/auth/tokens
Content-Type: application/json

{"email":"admin@test.com","password":"1234"}

返回结果

{
  "error": {
    "message": "Invalid email or password",
    "code": 401,
    "title": "Unauthorized"
  }
}

Docker Compose配置

version: "3.8"

networks:
  idm_network:
    driver: bridge

#project images
services:
...
  mysql:
      build: ./mysql         
      command:
      - "--default-authentication-plugin=mysql_native_password"
      networks:
        - idm_network
      volumes:
        - mysqlVolume:/var/lib/mysql
      environment:
        - MYSQL_ROOT_PASSWORD=idm
        - MYSQL_ROOT_HOST=%
        #- MYSQL_USER=root
        #- MYSQL_DATABASE=idm
        

  keyrock:
    image: fiware/idm:7.6.0  
    networks:
        - idm_network
    depends_on:
        - mysql
    ports:
      - "3005:3005"
      - "443:443"
    environment:
        - IDM_DB_HOST=mysql
        - IDM_HOST=http://localhost:3005
        - IDM_PORT=3005
        #- IDM_DB_PASS=secret
        #- IDM_DB_USER=idm
        #- IDM_ADMIN_USER=admin
        #- IDM_ADMIN_EMAIL=admin@test.com
        #- IDM_ADMIN_PASS=1234
...
#project volumes
volumes:
  mysqlVolume:
  mongoOrionVolume:
  mongoDataVolume:

我尝试过启用和禁用注释的环境变量,但均无效,现在无法推进项目测试,请问可能的原因是什么?


可能的原因分析

  • 数据库连接配置不匹配:Keyrock默认使用idm用户连接数据库,但你的MySQL配置中未创建该用户(仅设置了root密码)。若手动初始化数据库时创建了idm用户,需确保Keyrock的IDM_DB_USER和IDM_DB_PASS环境变量与数据库实际配置一致,否则Keyrock无法读取正确的用户数据。
  • 用户密码加密方式不符:Keyrock使用bcrypt加密存储密码,若手动添加用户时使用了明文或MySQL原生加密方式(mysql_native_password),验证时会直接失败。可检查数据库user表的password字段,确认是否为$2a$开头的bcrypt哈希值。
  • Keyrock初始化冲突:若启用IDM_ADMIN_*系列环境变量,Keyrock启动时会自动创建管理员用户,可能覆盖你手动添加的用户。此时需确保环境变量中的邮箱/密码与请求参数一致,或禁用这些变量避免冲突。
  • 数据库就绪延迟:depends_on仅保证MySQL容器启动,不代表数据库服务完全就绪。Keyrock可能在MySQL未初始化完成时启动,导致未正确加载用户数据。可尝试重启Keyrock容器,或添加启动脚本等待MySQL就绪。
  • IDM_HOST配置问题:容器内部的localhost指向自身,Keyrock的IDM_HOST设置为http://localhost:3005可能导致内部服务调用异常。可尝试改为容器网络内的地址http://keyrock:3005再测试。

内容的提问来源于stack exchange,提问作者Νικόλας Καστρινάκης

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 03:01:38