Vanilla Krb5LoginModule 正在工作,提示输入凭据
JAAS -> JGSS -> Kerberos -> Windows
到目前为止,在我的适度使用中,我设置了一个Krb5LoginModule
When I do:
Subject.doAs(
new LoginContext(...)).login(), // subject
new MyPrivilegedAction() // action
)
... 提示我输入凭据,操作成功。
使用 TGT Session Key hack,可以避免提示输入凭据
如果我还添加useTicketCache=true
到登录模块,并且我忍受了设置的安全隐患HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\Kerberos\Parameters\AllowTgtSessionKey=1
并且不使用 Windows 10 Credential Guard,那么操作会成功且不会提示输入凭据。
即使在 Windows 上,Java 12 也为我们提供了默认的原生 GSS-API 库
Java 11.0.10引入了在 Windows 上使用本机 GSS-API 实现的可能性,但没有提供默认实现。Java 12添加了桥接到 Windows SSPI的 GSS-API 的本机实现。这避免了冒险的需要AllowTGTSessionKey
。
使用本机 GSS-API 也可以,提示输入凭据
在 Windows 上的 Java 15.0.2(Oracle 和 OpenJDK)上,尽管有文档)仍然(现在错误地)声称“Windows 上没有众所周知的本机 GSS-API 库”,我可以:
- 省略
java.security.krb5.realm
和java.security.krb5.kd
系统属性(我用它来代替成熟的 kr5.conf,因为我的 AD 环境很简单);和 - 仅指定
sun.security.jgss.native=true
.
...并且操作提示输入凭据,但成功。
但是本机总是提示输入凭据
sun.security.jgss.native=true
在使用(在 Windows 上的 JDK 15.0.2 上)JAAS -> JGSS -> Kerberos -> Windows
尝试通过 SSPI 使用 Windows LSASS 来获取执行 JVM 的用户的凭据时,我可以期待吗?或者这不是本机GSS-API -> SSPI
库促进的东西吗?地面信息稀薄!