4

Vanilla Krb5LoginModule 正在工作,提示输入凭据

JAAS -> JGSS -> Kerberos -> Windows到目前为止,在我的适度使用中,我设置了一个Krb5LoginModuleWhen 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.realmjava.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库促进的东西吗?地面信息稀薄!

4

0 回答 0