Java Active Directory 集成 Windows 身份验证
-
06-07-2019 - |
题
你可以在下面的帖子中看到
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/