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

Kerberos SSO集成疑问:klist get是否对所有域用户生效?

Kerberos SSO与Keycloak集成的票据获取问题解答

核心结论

普通域用户应该能成功执行klist get HTTP/registered-spn.fqdn.com,仅管理员能成功的情况不符合预期,说明权限配置存在问题。

关于klist get的预期行为

  • 只要是域内合法用户,且目标SPN配置完全正确(SPN注册到正确的服务账户、服务账户具备允许用户获取票据的权限),普通用户就有权限获取该SPN对应的Kerberos服务票据。管理员能成功只是因为默认拥有更高权限,但这绝非普通用户获取票据的必要条件。

错误码分析

你遇到的0x80090342(对应klist返回码0xc00002fd)本质是Kerberos票据获取失败,常见触发原因包括:

  • SPN注册的服务账户未配置正确的委派权限:无论是非约束委派还是约束委派,都需要确保服务账户被允许向目标SPN委派用户身份
  • 约束委派配置遗漏:若使用约束委派,服务账户的msDS-AllowedToDelegateTo属性必须包含HTTP/registered-spn.fqdn.com
  • 用户对象被限制委派:用户所在OU或个人账户被设置了「账户敏感,不能被委派」属性
  • SPN注册错误:比如SPN被注册到普通域用户而非专用服务账户,或注册账户没有发布SPN的权限

集成推进的前提要求

必须确保所有需要使用SSO的普通域用户都能成功执行klist get命令,这是Kerberos SSO正常工作的基础:
Keycloak的Kerberos SSO流程依赖用户从KDC获取到对应SPN的服务票据,再将票据提交给Keycloak完成身份验证。如果普通用户连票据都无法获取,SSO流程根本无法触发。

排查建议

  • 验证SPN注册:执行setspn -L <服务账户名>,确认HTTP/registered-spn.fqdn.com已正确注册到目标服务账户
  • 检查服务账户委派设置:在AD用户和计算机中,打开服务账户属性的「委派」标签,确认委派配置符合需求(约束委派需指定允许的SPN)
  • 检查用户账户限制:确保用户账户未被标记为「账户敏感,不能被委派」
  • 分步测试:用普通用户身份先执行kinit获取TGT,再尝试klist get,观察结果变化
  • 查看KDC日志:在域控制器的事件查看器中,检查系统日志里的Kerberos相关事件,获取更详细的错误上下文

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 14:32:15