代码之家  ›  专栏  ›  技术社区  ›  hawkeye

Java ActiveDirectory集成Windows身份验证

  •  2
  • hawkeye  · 技术社区  · 15 年前

    你可以在下面的文章中看到

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

    http://forums.devshed.com/ldap-programming-76/active-directory-services-using-java-api-89586.html 使用 InitialLdapContext 在Java中的类。这需要一个 登录 和A 密码 被传进来。(即使服务帐户或运行Java进程的用户已经登录,可以运行。)

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

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

    那么为什么Java需要 登录 和A 密码 -如果此查询已对Windows可用?Kosuke暗示,在结论中,这篇博客文章不需要:

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

    我的问题是,我们如何调用Java中的ActiveDirectory而不:

    • 使用A 登录 密码 (在已登录的帐户下运行)?
    • 在命令行上执行命令?
    2 回复  |  直到 6 年前
        1
  •  3
  •   Emmanuel    6 年前

    这可能是因为

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

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

    In his other blog post on the subject Kohsuke更详细地讨论了为什么在Java目录中,当ActiveDirectory的时候,事情就是这样。

        2
  •  1
  •   Venkat Sadasivam    15 年前

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

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