我们如何配置 Java Waffle SSPI Kerberos 单点登录 (SSO) 客户端应该使用哪些加密密码?
我们如何才能最好地调试 客户端和服务器实际使用的密码?
背景
我们需要限制用于 Kerberos SSO 的加密密码,删除现在被认为很弱的密码。
我们的设置
Java 应用服务器通过纯 Java GSSAPI 实现 SSO。
Java 客户端通过两个可配置的 SSO API 实现 SSO:
在没有激活 Credential Guard 的 Linux 或 Windows 10 上:通过纯 Java GSSAPI。
在启用 Credential Guard 的 Windows 10 上:通过 Java Waffle + Microsoft SSPI API 。
Kerberos “后端”是 Windows Active Directory。
我们已经知道的
在纯 Java GSSAPI 实现(服务器和客户端)上,我们可以设置系统属性java.security.krb5.conf来配置 Krb5.conf 文件,我们可以在其中显式配置加密类型,例如
[libdefaults]
default_tkt_enctypes = aes256-cts
default_tgs_enctypes = aes256-cts
permitted_enctypes = aes256-cts
https://docs.oracle.com/javase/8/docs/technotes/guides/security/jgss/lab/part4.html
使用 GSSAPI,我们可以通过系统属性获取调试信息sun.security.krb5.debug=true
但是,在 Waffle SSPI 客户端上,这两个系统属性都没有任何影响。回想起来,这并不奇怪,因为 SSPI 没有调用 java Runtime kerberos 代码。
我的猜测是 SSPI 从 Windows 操作系统中获取允许的加密类型,我们可能无法从 java 应用程序中配置类型。
Waffle 网站建议使用以下链接进行 Kerberos 调试:
https://support.microsoft.com/en-us/help/262177/how-to-enable-kerberos-event-logging