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

如何在Keycloak 18.0中获取用户的MFA密钥(非客户端密钥)

获取Keycloak 18.0中用户的MFA密钥(TOTP)

Keycloak默认会加密存储用户的TOTP密钥,无法直接通过管理控制台或常规API获取明文密钥。以下是两种可行的操作方式:

方法一:数据库查询加解密

  • 定位Keycloak的数据库表:用户基础信息存在user_entity表,凭证信息存在credential表
  • 执行SQL筛选出TOTP类型的凭证记录:
    SELECT u.username, c.value 
    FROM user_entity u
    JOIN credential c ON u.id = c.user_id
    WHERE c.type = 'totp';
    
  • 解密查询结果:上述value字段是加密内容,需用Keycloak的加密密钥解密。该密钥可在Keycloak配置文件(如standalone.xml、keycloak.conf)的加密器配置中找到,或从keycloak数据库的component表中对应加密组件的配置项提取。

方法二:自定义Keycloak SPI扩展

  • 开发自定义SPI扩展,利用Keycloak内部逻辑解密TOTP密钥,暴露一个可调用的接口
  • 部署扩展后,通过Keycloak Admin API调用该自定义接口,批量获取用户的明文MFA密钥
  • 注意:此方式需要具备Keycloak扩展开发能力,且必须严格控制接口权限,防止密钥泄露

关键注意事项

  • 直接获取用户MFA密钥存在极高安全风险,可能违反数据隐私法规,操作前必须获得合法授权并遵循合规流程
  • 若目的是恢复用户MFA功能,更安全合规的方式是在Keycloak管理控制台为用户重置MFA,让用户重新完成配置

内容的提问来源于stack exchange,提问作者Gustavo Guimarães

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 11:45:45