【问题标题】:How can I call Active Directory using Windows Authentication without prompting for username/password?如何在不提示输入用户名/密码的情况下使用 Windows 身份验证调用 Active Directory?
【发布时间】:2009-06-18 01:27:47
【问题描述】:

您可以在以下帖子中看到使用 Java 中的 InitialLdapContext 类访问 LDAP 的示例:

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

http://forums.devshed.com/ldap-programming-76/active-directory-services-using-java-api-89586.html

这需要输入登录名和密码(即使运行 java 进程的服务帐户或用户已经登录才能运行)。

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

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

那么,如果 Windows 已经可以使用这个查询,为什么 Java 还需要登录密码呢? Kosuke 在这篇博文的结论中暗示它不是必需的:

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

我们如何在 Java 中调用 Active Directory,而无需:

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

【问题讨论】:

    标签: java command-line active-directory windows-authentication


    【解决方案1】:

    这可能是因为

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-10
      • 1970-01-01
      • 2014-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-07
      • 1970-01-01
      相关资源
      最近更新 更多