我想向Microsoft的活動目錄(使用Java)發送一個搜索字符串,指出「給我所有擁有已啓用帳戶的用戶」。僅檢索活動目錄上的已啓用帳戶
目前,我有:
字符串SEARCH_STRING = 「(&(objectClass的=用戶))」;
但是,當然,這隻能給我AD的用戶。我也想只得到那些活躍的人。這是用Java編寫的,但我認爲它對於LDAP來說不重要。
我想向Microsoft的活動目錄(使用Java)發送一個搜索字符串,指出「給我所有擁有已啓用帳戶的用戶」。僅檢索活動目錄上的已啓用帳戶
目前,我有:
字符串SEARCH_STRING = 「(&(objectClass的=用戶))」;
但是,當然,這隻能給我AD的用戶。我也想只得到那些活躍的人。這是用Java編寫的,但我認爲它對於LDAP來說不重要。
爲了獲得啓用的用戶,您必須檢查userAccountControl屬性,特別是其第二位,它對應於ACCOUNTDISABLE標誌。 MS KB 305144。
這可以用LDAP過濾器來完成這樣的:
(!(userAccountControl:1.2.840.113556.1.4.803:=2))
檢查這篇文章Filtering for Bit Fields的詳細信息,這項工作如何。
此外,您應該知道計算機帳戶是從用戶類型繼承的,因此您應該在您的過濾條件中添加一個條件以將其過濾掉。您還可能需要檢查NORMAL_ACCOUNT標誌位(512)以過濾其他類型的帳戶。
我不知道你是什麼意思的活躍用戶,所以我不能幫你在那裏。
+1,我有半分鐘的精神:o) – JPBlanc 2012-03-01 07:56:57
這裏是據我所知活動目錄critaria檢查是否活動或不。
How to use the UserAccountControl flags to manipulate user account properties給你的帳戶的狀態,則可以是感興趣的:
要在過濾器中使用此字段可以使用LDAP_MATCHING_RULE_IN_CHAIN OID,如Microsoft article Search Filter Syntax中所述。
(&(objectCategory=person)(!(userAccountControl:1.2.840.113556.1.4.804:=18)))
您需要弄清楚在您的上下文中「活動」意味着什麼,並編寫相應的LDAP查詢。既然你還沒有定義'積極'的含義,我懷疑這裏有人能幫助你。 – 2012-03-01 01:44:49
感謝您的快速響應。代碼的哪一部分決定了'主動'的定義? (通常,我創建了一個LDAP Property對象,它充滿了用戶名,密碼和主機信息以獲得AD連接。然後,我創建了上下文和搜索查詢,並從AD得到我的迴應。我有點困惑定義什麼「主動」意味着什麼。)你能否闡明? (我可以提供我的代碼,但我不知道哪些部分會被認爲是相關的。) – Sal 2012-03-01 02:35:51
您必須爲自己決定「主動」的含義以及如何映射到您可以查詢的LDAP屬性。我們不知道您的情況下「主動」是什麼意思。 – 2012-03-01 02:57:30