在Java服务器中验证Windows用户

时间:2009-09-24 21:53:35

标签: java .net authentication

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

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

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

4 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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