Java Active Directory集成Windows身份验证

时间:2009-06-18 01:27:47

标签: java command-line active-directory windows-integrated-auth

您可以在以下帖子中看到

http://forums.sun.com/thread.jspa?threadID=603815

http://forums.devshed.com/ldap-programming-76/active-directory-services-using-java-api-89586.html 使用Java中的InitialLdapContext类访问LDAP的示例。这需要传入登录密码。(即使服务帐户或运行java进程的用户已经登录也能够运行。)< / p>

由于用户或服务帐户已经登录 - 他们已经可以在没有用户名或密码的情况下运行如下所示的活动目录命令:

dsquery user -samid "login" |dsget user -samid -email -display

那么为什么Java需要登录密码 - 如果此查询已经可用于Windows? Kosuke暗示在这篇博文中不需要得出结论:

https://community.oracle.com/blogs/kohsuke/2008/06/12/more-active-directory-integration-java

我的问题是 - 如何在没有的情况下调用java中的活动目录:

  • 使用登录密码(在已登录的帐户下运行)?
  • 在命令行上执行命令?

2 个答案:

答案 0 :(得分:3)

这可能是因为

  • 您正在使用LDAP库/上下文与Active Directory进行通信,这些库需要支持其他类型的LDAP(AD是否算作LDAP?)
  • 这些实现的提供者是需要它的人。 LDAP通信是通过提供实现的提供程序完成的,而不是由实际的Java运行时完成。
  • 当前用户的密码不是(我希望)实际由Windows提供给Java。

当Windows在您运行需要它的应用程序时对您进行身份验证时,除了您的实际密码之外,它还会显示其他一组凭据。这些凭证在Java中不可用,或者至少没有任何LDAP通信提供者提供检索它的方法。

In his other blog post on the subject Kohsuke进一步扩展了为什么事情就像它们在Java-land中的方式一样。

答案 1 :(得分:1)

此外,您可以查看以下链接,找到使Windows集成身份验证在Java平台中运行的详细说明。

  

http://webmoli.com/2009/08/29/single-sign-on-in-java-platform/