在我的SSO项目中集成了Kerberos身份验证。遇到一个奇怪的场景。Kerberos SPN获取缓存在Windows服务器上?
我做了一个新用户并附加了一个SPN。按照this question上的步骤进行操作。我的意思是: -
- kinit用户名 - 然后输入密码给我的信息,票证被保存。
- kinit spn(int格式为HTTP/FQDN) - 然后输入密码给我留言,勾选已保存。
一段时间后,我决定再次尝试这个结束了,所以我用命令
setspn -D spn username
脱离从用户名SPN。然后我从AD中删除了这个用户(用户名)。
接下来,我创建了一个新用户say username1,并按照this question的规定注册了与上述步骤相同的spn,以便为此新用户注册。
现在执行kinit USERNAME1 - 并输入密码,给那票保存该消息,但是使用kinit SPN - 并输入密码给我的错误
client not found in Kerberos database.
注意,如果我使用一切正常不同的(新) SPN。
所以问题是,Windows服务器是否有某些缓存,其中一些链接仍然存在,因此我无法再次使用该spn?或者我从用户中分离出spn时犯了一些错误?
感谢, 尼基尔
我发现在成功之前通过_setspn_或_ktpass_命令将新的SPN与用户名链接起来后,可能会长达5分钟的延迟。我认为这是由于AD复制,而不是一些缓存机制。您使用_setspn -D_正确地从原始用户名分离了SPN。继续并立即运行带有SPN的kinit用户名1 - 现在是否成功或失败?语法是:kinit -k -t path \ to \ keytab HTTP/FQDN –
请考虑在您的问题中添加_spn_,_active-directory_和_kdc_的其他标记。 –
嘿,我没有尝试kinit用户名1 - 这工作正常,并且kinit HTTP/FQDN失败,找不到客户端,kinit -k -t path \ to \ keytab HTTP/FQDN失败,出现KrbException:没有可用的default_tkt_enctypes类型的键 –