2011-09-19 58 views
0

我需要使用不同於「用戶名」的Windows ID對用戶進行身份驗證。例如:windows ID是jSmith,但用戶名是「Joe Smith」。我需要根據Windows ID找到Joe Smith,然後檢查他是否是某個組的成員。LDAP:如何搜索Windows用戶ID

我假設或希望Windows ID是用戶的屬性,但我是新來的LDAP,不知道如何搜索所有用戶的特定屬性。

回答

0

我假設您說Windows ID用於身份驗證時,您的LDAP實際上是Active Directory。

如果你只是想找到LanId用戶在Active Directory:

  1. 連接到主動使用Admin /服務帳戶的用戶名和密碼。
  2. 搜索與以下過濾器用戶: "(&(objectClass=user)(sAMAccountName=" + searchUsername + "))"

如果要對用戶進行認證:

Hashtable environment = new Hashtable(); 
environment.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");// can make it variable, not needed so far 
environment.put(Context.SECURITY_AUTHENTICATION, "simple"); // can make it variable, not needed so far 
environment.put(Context.PROVIDER_URL, url); 
environment.put(Context.SECURITY_PRINCIPAL, username + "@" + domain); // This is specific to AD 
environment.put(Context.SECURITY_CREDENTIALS, password); 

return new InitialLdapContext(environment, null); 

如果上面的代碼無一例外成功執行,這意味着用戶提供正確的用戶名/密碼

+0

好吧,我做了這個搜索過濾器,它工作得很好。 (顯然有些術語是由名字組成的,但你明白了)。 「(&(ObjectCategory = person)(sAMAccountName = jSmith)(memberOf = CN = Blah,OU = Company-Users,DC = BlahBlah,DC = local))」現在我想將密碼添加到過濾器中。任何人都知道密碼的「關鍵」是什麼?例如(passwordKey =「MyDogName13」)其中passwordKey是...在這個相同的主題...有什麼辦法來獲得可用屬性(鍵名稱)的列表回來?謝謝。 – ClimberChick

+0

即使您可以檢索密碼,然後通過匹配進行身份驗證,我也會推薦使用上面提到的「綁定身份驗證」。我創建了一個簡單的API來使用Active Directory進行身份驗證和屬性檢索,您可以從這裏獲得:https://github.com/kdabir/active-directory-lookup(我剛剛簽入,將寫入自述文件不久) – kunal