Java Waffle SSPI Kerberos单点登录:配置加密密码并调试

Java Waffle SSPI Kerberos单点登录:配置加密密码并调试,java,kerberos,sspi,waffle,Java,Kerberos,Sspi,Waffle,我们如何配置Java华夫格SSPI的加密密码 Kerberos单点登录(SSO)客户端应使用什么 我们如何最好地调试哪些密码 客户机和服务器实际上正在使用这些数据吗 背景 我们需要限制Kerberos SSO使用的加密密码,删除现在认为很弱的密码 我们的设置 Java应用服务器通过纯Java GSSAPI实现SSO Java客户端通过两个可配置的SSO API实现SSO: 在Linux或Windows 10上,没有激活凭据保护:通过纯Java GSSAPI 在凭证保护处于活动状态的Window

我们如何配置Java华夫格SSPI的加密密码 Kerberos单点登录(SSO)客户端应使用什么

我们如何最好地调试哪些密码 客户机和服务器实际上正在使用这些数据吗

背景

我们需要限制Kerberos SSO使用的加密密码,删除现在认为很弱的密码

我们的设置

Java应用服务器通过纯Java GSSAPI实现SSO

Java客户端通过两个可配置的SSO API实现SSO:

  • 在Linux或Windows 10上,没有激活凭据保护:通过纯Java GSSAPI

  • 在凭证保护处于活动状态的Windows 10上:通过Java华夫饼干+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

使用GSSAPI,我们可以通过系统属性
sun.security.krb5.debug=true

但是,在华夫格SSPI客户端上,两个系统属性都没有任何影响。回想起来,这并不奇怪,因为SSPI没有调用java运行时kerberos代码

我的猜测是SSPI从Windows操作系统获取了允许的加密类型,我们可能无法从java应用程序配置这些类型

Waffle网站建议使用以下链接进行Kerberos调试:


为什么不在AD中为相关用户和服务主体禁用这些较弱的密码?客户端将请求它可以使用哪些密码。如果AD只返回您认为安全的,客户端只能使用这些。@Steve这将支持我的直觉,“…SSPI从Windows操作系统获取加密类型…”,因此,如果用户和服务在AD中正确设置,则无需执行其他操作。这与纯Java GSSAPI形成对比,纯Java GSSAPI本质上没有与Windows/AD紧密集成,需要我通过krb5.conf文件配置加密类型