java - 如何使用 Windows 身份验证调用 Active Directory,而不提示输入用户名/密码?

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

您可以在以下帖子中查看使用 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 进程的服务帐户或用户已经登录才能运行)。

由于用户或服务帐户已经登录 - 他们已经可以运行如下所示的 Active Directory 命令,而无需用户名或密码:

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,而不需要:

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

最佳答案

发生这种情况可能是因为

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

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

In his other blog post on the subject Kohsuke 进一步阐述了为什么 Java 领域的 Active Directory 是这样的。

关于java - 如何使用 Windows 身份验证调用 Active Directory,而不提示输入用户名/密码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1010356/

相关文章:

python - 从命令行禁用对 python 程序的文件访问

windows - 如何在后台从命令行启动 GUI 应用程序?

c# - Active Directory 帐户密码到期日期和细粒度密码策略

python - 如何从后台运行的脚本返回命令行

java - 无法在约束布局中以编程方式添加 View

java - Apache Commons Id UUID 版本 1 的问题

java - 将使用多线程的程序变成使用阻塞队列的程序

azure - 如何使用 OAuth2 和 microsoft 登录以及 HTTP 请求通过用户名/密码登录

windows - 如何以编程方式获取 AD 域中的登录服务器名称

java - 如何在文本区域中打印对象结果?