问题描述
Vanilla Krb5LoginModule 正在工作,提示输入凭据
到目前为止,在我对 JAAS -> jgss -> Kerberos -> Windows
的适度使用中,我已经设置了 Krb5LoginModule
时:
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,那么操作成功没有提示输入凭据。
Java 12 即使在 Windows 上也为我们提供了默认的原生 GSS-API 库
Java 11.0.10 introduced using a native GSS-API implementation 在 Windows 上的可能性,但没有提供默认实现。 Java 12 added a native implementation of GSS-API 桥接到 Windows sspI。这避免了对风险 AllowTGTSessionKey
的需要。
使用原生 GSS-API 也可以,提示输入凭据
在 Windows 上的 Java 15.0.2(Oracle 和 OpenJDK)上,尽管docs 仍然(现在错误地)声称,“没有众所周知的原生 GSS-API Windows 上的库”,我可以:
- 省略
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
库提供的便利吗?地上信息稀少!
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)