Single sign on 使用集成Windows身份验证运行SPNEGO Kerberos时发生GSSException

Single sign on 使用集成Windows身份验证运行SPNEGO Kerberos时发生GSSException,single-sign-on,kerberos,windows-authentication,spnego,mit-kerberos,Single Sign On,Kerberos,Windows Authentication,Spnego,Mit Kerberos,我正在尝试使用spnego和tomcat设置Kerberos集成Windows身份验证 这是我第一次这样做,还没有看到一个真正的环境,所以主要依靠在线文档的spnego网站。 我得到以下错误: GSS异常:GSS-API级别未指定故障(机制级别: 无效参数(400)找不到要解密的适当类型的密钥 AP代表-RC4和HMAC) Tomcat正在作为本地服务运行。 并且keytab支持128和256加密 你能帮我解决这个问题吗 KRB5.conf: [libdefaults] default_tkt_

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

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

GSS异常:GSS-API级别未指定故障(机制级别: 无效参数(400)找不到要解密的适当类型的密钥 AP代表-RC4和HMAC)

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;
};

我猜你在访问webapp时会出现错误

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

创建keytab文件时应使用“/crypto all”


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

我猜您在访问WebApp时会遇到错误

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

创建keytab文件时应使用“/crypto all”



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

请将krb5.conf和login.conf的内容直接粘贴到问题本身。不要让我们去其他网站下载它们。这些文件足够短,你可以这样做。好的,肯定是krb5.conf无论如何,对于login.conf,您可以显示相关的SPNEGO部分或整个内容,如果它不比krb5.conf长很多。我已经用文件内容更新了票证您是否使用Microsoft Active Directory fro Kerberos?您是否还有创建密钥表时使用的密钥表创建语法的副本?如果有,您是否也可以发布该副本?是的,它使用AD for kerberos。我没有keytab命令,但要求管理员提供命令,如果我得到它,请将krb5.conf和login.conf的内容直接粘贴到问题本身中。不要让我们去其他网站下载它们。这些文件足够短,你可以这样做。好的,肯定是krb5.conf无论如何,对于login.conf,您可以显示相关的SPNEGO部分或整个内容,如果它不比krb5.conf长很多。我已经用文件内容更新了票证您是否使用Microsoft Active Directory fro Kerberos?您是否还有创建密钥表时使用的密钥表创建语法的副本?如果有,您是否也可以发布该副本?是的,它使用AD for kerberos。我没有keytab命令,但已要求管理员提供命令,如果我得到该命令,管理员将提供该命令。根据管理员的说明,“crypto al”不能使用,因为它是组织中的一个重要安全漏洞。klish命令是在客户端运行的,我在这个问题中提出了两个问题。我对这个“安全漏洞”非常感兴趣。。。。“klist”输出已经显示TGT的“RSADSI RC4-HMAC(NT)”,那么问题出在哪里?如果不使用“不安全”密码,广告管理员应相应地配置广告。”klist的输出不显示服务票证,仅显示票证授予票证,因此浏览器无法向您的服务/app发送一张。抱歉,我错过了添加另一张票证,该票证也由klist显示:CLIENT:B1GYZDM@test.win.org服务器:HTTP/br1twvfsg005.test.win.org@test.win.org KerbTicket加密类型:RSADSI RC4-HMAC(NT)从keypass文件中输出的
ktutil
是什么样子的?管理员创建了keytab,所以我不知道使用了什么命令。我能做些什么来确保环境设置正确吗?根据管理员的说法,不能使用“crypto al”,因为它是组织中的一个严重安全漏洞。klish命令是在客户端运行的,我在这个问题中提出了两个问题。我对这个“安全漏洞”非常感兴趣。。。。“klist”输出已经显示TGT的“RSADSI RC4-HMAC(NT)”,那么问题出在哪里?如果不使用“不安全”密码,广告管理员应相应地配置广告。”klist的输出不显示服务票证,仅显示票证授予票证,因此浏览器无法向您的服务/app发送一张。抱歉,我错过了添加另一张票证,该票证也由klist显示:CLIENT:B1GYZDM@test.win.org服务器:HTTP/br1twvfsg005.test.win.org@test.win.org KerbTicket加密类型:RSADSI RC4-HMAC(NT)从keypass文件中输出的
ktutil
是什么样子的?管理员创建了keytab,所以我不知道使用了什么命令。我是否可以进行任何检查以确保环境设置正确?
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
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;
};