【问题标题】:How can I programmatically determine the setting of jdk.http.ntlm.transparentAuth如何以编程方式确定 jdk.http.ntlm.transparentAuth 的设置
【发布时间】:2021-09-07 19:57:02
【问题描述】:

我有一个案例,我正在处理的服务器必须能够使用 NTLM 身份验证。 我相信它正在设置:

jdk.http.ntlm.transparentAuth=allHosts

但我想在运行时证明这一点。 该值设置在一个特殊的位置。在我的情况下,从安装 Java 的内部文件在这里:

C:\Program Files\AdoptOpenJDK\jdk-11.0.4.11-hotspot\conf\net.properties

如何查询该值? 我希望能够在 Evaluate 中的调试器中执行此操作,同时在断点处暂停。 像下面这样的东西会很好(但请注意,这不起作用,因为它不是 env 的一部分)

System.getenv("Path")

【问题讨论】:

  • System.getProperty("jdk.http.....")
  • 我假设这个“jdk”属性存储在备用存储中。使用 System.getProperties() 和使用 System.getProperty 时都不会显示它。请注意,我有一个正在运行的服务器,并用它来验证它不能以这些方式看到。

标签: java ntlm


【解决方案1】:

来自this我想说的解决方案如下:

System.getProperty("jdk.http.ntlm.transparentAuth");

【讨论】:

  • 不错的尝试,看起来不错 - 但遗憾的是没有奏效。我猜它存储在其他地方。
  • 抱歉,我应该在设置了该值的工作系统上提到该调用未显示其值。
  • net.properties 的第一行说(强调添加)“这些值仅在系统属性为 not [set] 时使用”,因此它们不可能是系统属性。
【解决方案2】:

缓存这些值的类是java.base/sun.net.NetProperties.get(String key) 方法是public static,因此调试器应该可以访问它。

【讨论】:

  • 太好了,我能够在 IDEA 中的断点处评估它并看到它:sun.net.NetProperties.get("jdk.http.ntlm.transparentAuth")
猜你喜欢
  • 2011-03-30
  • 2014-06-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-10
  • 2021-08-09
  • 2011-09-07
  • 1970-01-01
相关资源
最近更新 更多