将新的SPN添加到现有的服务ID

我们有一个使用spring-security kerberos的tomcat服务器根据活动目录对网页进行身份validation。

有大约25个域控制器。

该网站有两个基于CNAME的DNS别名。

该网站目前有一个服务ID,其中包含为DNS Alogging注册的SPN以及每个CNAME。

虽然现在一切正在进行,但我不知道如何在没有可能的停机时间的情况下可靠地更改此configuration。

原因是客户cachingkerberos票据:

http://www.juniper.net/techpubs/en_US/uac4.2/topics/concept/user-role-active-directory-about.html

'kerbtray.exe'程序有助于在端点上查看和删除Kerberos票据。 如果更新了SPN或更改了密码,则必须从端点清除旧故障单(假设端点仍然具有从先前的SPNEGO请求到MAG系列设备的故障单的caching副本。在testing期间,您应该在每次authentication请求之前清除故障单。

用于检查/删除高速caching票证的“klist”程序的说明: http : //technet.microsoft.com/en-us/library/hh134826.aspx

因此,如果每个连接到我的Web服务器的客户端(运行Windows的用户)在更新SPN或密码后立即生成kerberos票证,那么我如何确保更改是无缝的? 有没有可以安全地完成的操作? 我不能要求所有用户安装klist并删除他们的旧票。

在unix方面,这样做的策略是在服务的密钥表中保留密钥的旧密钥和新密钥。 Kerberos在密钥上保留版本号,kerberos库将检查密钥表中的正确版本,以便在提供服务票证时使用。

您只能在KDC中拥有一个版本的密钥,但只要密钥的旧版本和新版本都位于服务器上的密钥表中,您的客户端就不会看到服务中断。 如果你能解释你如何安装服务的keytab,我可能会提出一些build议。

也许你应该testing添加一个SPN,而不是改变现有的SPN。 安全主pipe可以有多个SPN。