你可以在下面的帖子中看到

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

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

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

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 中调用活动目录而不需要:

  • 用一个 登录 或者 密码 (在已登录的帐户下运行)?
  • 在命令行上执行命令?
有帮助吗?

解决方案

出现这种情况可能是因为

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

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

在他关于该主题的另一篇博客文章中 Kohsuke 进一步阐述了为什么 Java 领域的 Active Directory 是这样的。

其他提示

您还可以查看下面的链接,找到使 Windows 集成身份验证在 Java 平台中工作的详细说明。

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top