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

Windows客户端Java富客户端对接STS的SSPI单点登录问题求助

Windows Java富客户端对接STS实现SSO问题排查

我在Windows客户端尝试用Java富客户端对接STS(安全令牌服务)实现真正的单点登录(SSO)。目前GSSAPI能正常工作,但必须先手动执行java kinit获取TGT(票据授予票据),而受Windows凭据安全策略限制,allowtgt-registry项已无法使用。

已验证可行的方案

  • 浏览器(Firefox、Chrome、IE等)通过Negotiate授权头可正常实现SSO
  • 手动执行java kinit后,GSSAPI可正常工作

尝试后不可行的方案

  • Apache WinHttpClient
  • Waffle

关键交互流程

  1. 请求:GET /adfs/ls/wia?client-request-id=UUID
  2. 响应:401 WWW-Authenticate: Negotiate 和 NTLM
  3. 请求:携带Authorization: Negotiate YIIMWw...头的GET /adfs/ls/wia?client-request-id=UUID
  4. 响应:仍返回401 WWW-Authenticate: Negotiate 和 NTLM

代码差异

我使用的Waffle代码(Apache WinHttpClient逻辑类似)与可行的GSSAPI方案仅存在以下差异:

String SECURITY_PACKAGE = "Negotiate";

byte[] token = WindowsSecurityContextImpl.getCurrent(SECURITY_PACKAGE, "HTTP/mystsserver.my.domain").getToken();

String ticket = Base64.getEncoder().encodeToString(token);
String header = SECURITY_PACKAGE + " " + ticket;

GSS-API生成的票据与SSPI生成的票据开头一致、长度相同,但被IIS拒绝。

问题

  1. 如何针对此场景调试STS?
  2. 如何无需手动执行kinit即可通过GSSAPI获取令牌?
  3. 我在使用Waffle或WinHttpClient时存在哪些问题?

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 16:25:24