Vanilla Krb5LoginModule が機能しており、cred を要求しています
これまでの控えめな使用法では、次のJAAS -> JGSS -> Kerberos -> Windows
ように設定しましたKrb5LoginModule
。
Subject.doAs(
new LoginContext(...)).login(), // subject
new MyPrivilegedAction() // action
)
... 資格情報の入力を求められますが、アクションは成功しています。
TGT セッション キー ハックを使用すると、クレデンシャルのプロンプトを回避できます
ログイン モジュールにも追加し、 Windows 10 Credential Guard を使用せずuseTicketCache=true
に設定のセキュリティ上の危険を我慢した場合、資格情報の入力を求められずにアクションが成功します。HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\Kerberos\Parameters\AllowTgtSessionKey=1
Java 12 は、Windows でもデフォルトのネイティブ GSS-API ライブラリを提供します
Java 11.0.10では、Windowsでネイティブ GSS-API 実装を使用できる可能性が導入されましたが、デフォルトの実装は提供されませんでした。Java 12では、Windows SSPI にブリッジするGSS-API のネイティブ実装が追加されました。これにより、危険な.AllowTGTSessionKey
ネイティブの GSS-API の使用も機能し、cred のプロンプトが表示されます
ドキュメントにもかかわらず、Windows上のJava 15.0.2(OracleとOpenJDKの両方)では、 「Windowsにはよく知られているネイティブGSS-APIライブラリはありません」とまだ(現在は誤って)主張していますが、次のことができます。
- システム プロパティを省略
java.security.krb5.realm
しjava.security.krb5.kd
ます (私の AD 環境は単純なので、本格的な kr5.conf の代わりに使用します)。と - ご指定
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
ライブラリによって促進されるものではないのでしょうか。地上では情報が薄い!