我正在使用 KerberosLoginModule 通过 JBoss EAP 6.4 中配置的安全域的数据源连接到 MSSQL Server。
我的应用程序连接成功,工作正常长达 10 小时。之后,Kerberos 票证过期,因为 10 小时是 Active Directory 作为 KDC 的默认生存期,我的应用程序失败并显示"票证已过期 (32("错误。
我不明白为什么在票证到期后,应用程序不尝试再次使用密钥表来获取新票证。
有什么线索吗?
这要归功于这篇红帽支持文章,我能够解决我的事件。
我缺少的是生命周期短于 10 小时的数据源的 Infinispan 缓存容器,这是默认的 Kerberos 票证过期生命周期。通过为缓存中的连接对象设置较低的生存期,将在到期之前逐出票证,并创建一个过期日期较晚的新票证。