簡體   English   中英

如何在不提示輸入用戶名/密碼的情況下使用 Windows 身份驗證調用 Active Directory?

[英]How can I call Active Directory using Windows Authentication without prompting for username/password?

您可以在以下帖子中看到使用 Java 中的InitialLdapContext class 訪問 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 而無需:

  • 使用登錄名或密碼(在已登錄的帳戶下運行)?
  • 在命令行上執行命令?

這可能是因為

  • 您正在使用 LDAP 庫/上下文與 Active Directory 通信,這些庫需要支持其他類型的 LDAP(AD 算作 LDAP 嗎?)
  • 這些實現的提供者是需要它的人。 LDAP 通信是通過提供實現的提供程序完成的,而不是由實際的 Java 運行時完成的。
  • 當前用戶的密碼不是(我希望)實際由Windows提供給Java。

當 Windows 在您運行需要它的應用程序時根據 AD 對您進行身份驗證時,它會提供除您的實際密碼之外的其他一組憑據。 這些憑據在 Java 中不可用,或者至少 LDAP 通信器的提供者都沒有提供檢索它的方法。

在他關於該主題的另一篇博文中, Kohsuke 進一步闡述了為什么當涉及到 Active Directory 時,事情在 Java 領域是這樣的。

另外,您還可以查看以下鏈接,以找到使Windows Integrated Authentication在Java Platform中運行的詳細說明。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM