在Java服务器中validationWindows用户

我正在研究用Java编写的服务器和一个在同一网络上的Windows机器上运行的客户端(用.Net编写的桌面应用程序)。 我希望有一些基本的身份validation,以便服务器可以确定运行客户端的用户的用户名,而无需用户在客户端重新输入他们的Windows密码。

这是可能的,实现它的最简单方法是什么?

我看了一些可用的API,看起来好像Java中的org.ietf.jgss包和.Net中的NegotiateStream类,应该可以相互通信来实现这一点 – 但我一直在打击令人沮丧的错误消息我不明白。 我想我会检查这是否是正确的方法,如果是这样的话,我会发布一个单独的问题,更详细地说明有问题的错误:)

这种方法是正确的。 但请注意一些事情:

  • 这与“基本身份validation”无关(在http中)
  • .NET将尝试使用SPNEGO GSS机制。 有关此机制的正确支持,请参阅Sun文档 。
  • 您的服务需要体现服务主体。 因此,您不仅需要为用户创建Active Directory帐户,还需要为服务创建Active Directory帐户,并且需要将服务的密码放入Java密钥表中。

如果您使用的是Active Directory,我认为Spring LDAP模块可以为您提供访问凭据的好方法。

不熟悉GSS机制。 我建议在无密码ssh中使用共享密钥机制。

这个开源库http://spnego.sourceforge.net正是您正在寻找的。 它在服务器上实现HTTP Servlet Filter,以便您的Web应用程序可以调用request.getRemoteUser()来查找用户名。