【问题标题】:GSSException when running SPNEGO Kerberos with Integrated Windows Authentication运行带有集成 Windows 身份验证的 SPNEGO Kerberos 时出现 GSSException
【发布时间】:2017-01-30 18:58:52
【问题描述】:

我正在尝试使用 spnego 和 tomcat 设置 Kerberos 集成 Windows 身份验证。

这是我第一次这样做,还没有看到真正的环境,所以主要依赖于 spnego 网站的在线文档。 我收到以下错误:

GSSException:在 GSS-API 级别未指定故障(机制级别: 无效参数 (400) 找不到合适类型的密钥来解密 AP REP - 带有 HMAC 的 RC4)

Catalina log shows:
Jan 30, 2017 10:12:37 AM net.sourceforge.spnego.SpnegoHttpFilter doFilter
SEVERE: HTTP Authorization Header=Negotiate <edited - actual had a big key>
Jan 30, 2017 10:41:24 AM org.apache.coyote.AbstractProtocol pause
INFO: Pausing ProtocolHandler ["http-bio-8443"]
Jan 30, 2017 10:41:24 AM org.apache.coyote.AbstractProtocol pause

附加我的 krb5 和 login.conf。

krb5.conf login.conf

KLIST command gives 2 keys:
CLIENT: B1GYZDM @ test.win.org
Server: krbtgt/test.win.org @ test.win.org
KerbTicket Encryption Type: RSADSI RC4-HMAC(NT) 

CLIENT: B1GYZDM @ test.win.org
Server: krbtgt/test.win.org @ test.win.org
KerbTicket Encryption Type: AES-256-CTS-HMAC-SHA1-96

Tomcat 作为本地服务运行。 并且 keytab 支持 128 & 256 加密。

你能帮我解决这个问题吗?

KRB5.conf:
[libdefaults]
default_tkt_enctypes = aes128-cts aes256-cts
default_tgs_enctypes = aes128-cts aes256-cts
permitted_enctypes   = aes128-cts aes256-cts

[realms]
test.win.org  = {
    kdc = test.win.org 
    default_domain = test.win.org 
}

[domain_realm]
test.win.org = test.win.org


login.conf:
spnego-client {
com.sun.security.auth.module.Krb5LoginModule required;
};

spnego-server {
com.sun.security.auth.module.Krb5LoginModule required
storeKey=true
useKeyTab=true
keyTab="file:///E:/Apps/apache-tomcat-7.0.40/bin/test.keytab"
isInitiator=false;
};

custom-client {
com.sun.security.auth.module.Krb5LoginModule required
storeKey=true
useKeyTab=true
keyTab="file:///E:/Apps/apache-tomcat-7.0.40/bin/test.keytab"
principal=B1ADPST000;
};

【问题讨论】:

  • 请将 krb5.conf 和 login.conf 的内容直接粘贴到问题本身。不要让我们去其他网站下载它们。这些文件足够短,您可以这样做。好吧,无论如何肯定是 krb5.conf,对于 login.conf,如果它不比 krb5.conf 长多少,您可以显示相关的 SPNEGO 部分或整个内容。
  • 我已经用文件内容更新了工单
  • 您是否使用 Microsoft Active Directory 来访问 Kerberos?您是否还有创建 keytab 时使用的 keytab 创建语法的副本,如果有,您也可以发布吗?
  • 是的,它为 kerberos 使用 AD。我没有 keytab 命令,但已要求管理员提供命令,如果我得到它。

标签: single-sign-on kerberos windows-authentication spnego mit-kerberos


【解决方案1】:

我猜你在访问 webapp 时遇到了错误。

keytab 文件很可能没有匹配的密钥条目。

创建密钥表文件时应使用“/crypto all”。

您可以在客户端而不是服务器端运行“klist”,并检查客户端从 KDC 获得的服务票证(部署 WebApp 的主机),而不是“票证授予票证 (TGT)”

【讨论】:

  • 根据管理员的说法,“crypto al”不能被使用,因为它是 org 中的一个重大安全漏洞。 klish 命令是在客户端运行的,我将提供的 2 张票放在这个问题中。
  • 我会对那个“安全漏洞”非常感兴趣 ....“klist”输出已经显示了 TGT 的“RSADSI RC4-HMAC(NT)”,那么问题是什么?如果不使用“不安全”密码,则 AD 管理员应相应地配置 AD。 'klist' 输出不显示服务票证,仅显示票证授予票证,因此浏览器无法将其发送到您的服务/应用程序。
  • 抱歉,我错过了再添加一张票,这也由 klist 显示:客户端:B1GYZDM @ test.win.org 服务器:HTTP/br1twvfsg005.test.win.org @ test.win.org KerbTicket 加密类型:RSADSI RC4-HMAC(NT)
  • keypass 文件中ktutil 的输出是什么样的?
  • 管理员创建了密钥表,所以我不知道使用的命令。我可以做任何检查来确保环境设置正确吗?
猜你喜欢
  • 1970-01-01
  • 2011-10-08
  • 2010-09-25
  • 2019-05-20
  • 2018-04-23
  • 1970-01-01
  • 1970-01-01
  • 2011-05-26
  • 2019-10-31
相关资源
最近更新 更多