当前位置: 首页 > 面试题库 >

人们如何使Java SPNEGO客户端在Windows中工作?

高宇定
2023-03-14
问题内容

为了在Windows上使用Java进行客户端HTTP
SPNEGO身份验证,您需要设置Windows注册表项allowtgtsessionkey。这是有据可查的。我不明白的是人们如何解决这个问题?大多数公司站点永远不会接受只使用一个软件就可以在Windows中更改此注册表项。还需要考虑是否需要在组织中的每个工作站上更改此麻烦。但这只是理论,因为到目前为止,我一直无法说服我们的任何客户更改此注册表项。

我不怪他们。大多数公司管理员会认为这会 放宽 安全性,因此会反对。

因此,我真的真的不了解人们如何使Windows + Javahtml" target="_blank">客户端+ Kerberos在大学环境,家庭用户等之外的任何环境下工作。

我从企业管理员那里得到的问题是:“当IE和Firefox之类的应用程序在不设置此注册表项的 情况下
进行SPNEGO时没有问题时,为什么我们需要设置此注册表项?”。好吧,我知道答案是什么。这是因为(很可能)IE和Firefox等应用程序基于Windows本地GSS
API(SSPI),而Sun的Java使用其自己的实现。

我假设使用WAFFLE之类的东西可以解决问题,但我倾向于纯Java解决方案。我还假设使用基于Java的解决方案(如Spring安全性或Apache
HttpClient)将无济于事,因为它们都会遭受此问题的困扰。

任何帮助或指针将不胜感激。

UPDATE1

我发现Oracle的错误数据库中对此有一个RFE。Oracle员工对此事还提交了一个补丁程序,有关此功能的JDK邮件列表上的讨论也已发布。据我所知,这在当前的Java
7中是不可用的,即使是实验性的,也没有使我更加明智。对?

UPDATE2

现在,OpenJDK Security
Dev邮件列表中的问题再次存在。


问题答案:

感谢您在security-dev邮件列表中引用我的线程;-)我的中期目标是通过认可的类路径使此补丁对Java
6+可用。您可能对我最近创建的WAFFLE票感兴趣:https
:
//github.com/dblock/waffle/issues/50

我也对WAFFLE进行了评估,但是它不是Java-GSS那样的,因此必须创建重复的代码,这是我要避免的所有方法。

整个问题并不完全是Oracle的错。Microsoft只是通过LSA
CallPackage功能阻止对会话票证的任何调用。借口是安全。我真的很想知道当我无法合理访问TGT时SSPI如何创建服务凭单。因此,这种封闭源解决方案很烂。

目前,您只有三种选择:

  1. 通过Java方式再次获取TGT
  2. 尝试华夫饼
  3. 编写自定义代码

我埋葬了糟糕的注册表项,因为它无论如何对于具有域帐户的本地管理员不起作用。就我而言,Windows上的Tomcat开发人员在此期间求助于Java的kinit。



 类似资料:
  • 创建okhttp3客户端,使用sni地址访问web服务器,但握手失败,错误消息为“javax.net.ssl.SSLHandShakeException:握手期间远程主机关闭连接”。 有人知道如何在okhttp3客户端代码中使用sni地址吗?

  • 我尝试为我的网站提供文件上传/下载服务,并且尝试使用openstack中的对象存储。问题是,我通过php和openstack PHPSDK做这件事没有问题,但是当我试图通过一些javascript做这件事时,我找不到一个好的sdk或方法。我没有使用node,我有一个php服务器和一个javascript客户端。我想直接从javascript客户端上传或下载文件。我不希望文件通过php服务器传输。我

  • 莴苣支持这种开箱即用的群集/分片吗?如果是,如何将其配置为使用客户端散列?

  • 在我的回购中,有三个文件:、和。 我使用卷曲像: 我得到的结果是: {“name”:“config-client”,“profiles”:[“prod”],“label”:“master”,“version”:null,“state”:null,“propertysources”:[]} 有什么方法可以获得属性文件中的值吗?

  • 直播环境准备 在直播正式开始前,需要对主讲端环境进行部署和测试,主讲端环境需满足以下要求: 网络环境要求: 1)上行带宽达到2Mbps或以上(参考测速工具:http://www.speedtest.net) 2)建议使用有线网络,不推荐WiFi或移动信号网络 3)建议使用独享网络,不推荐办公/酒店类共享网络 4)建议采用电信、联通等一级运营商线路,不推荐小运营商(如长宽、电信通等) 电脑配置要求:

  • 问题内容: 我正在编写django应用程序,该应用程序应充当MQTT发布者和订阅者。 我应该在哪里启动Paho客户端并运行loop_forever()函数。 应该在wsgi.py中吗? 问题答案: 更新: 如果您需要在Django的多个线程运行,那么发布您的Django应用程序的信息,您可以使用辅助功能从发布泛美卫生组织的模块- https://eclipse.org/paho/clients/p