2014-11-22 127 views
2

在我的Java Web(Jboss)應用程序中,我需要從Active Directory獲取數據。基本上,我知道員工的用戶ID(Windows登錄ID),我需要知道他/她的辦公電話號碼。所以我認爲唯一的地方包含員工的電話#在Windows Active Directory中。所以我嘗試了一些示例java代碼並嘗試訪問活動目錄。這裏是一個示例代碼:http://myjeeva.com/querying-active-directory-using-java.html 公共ActiveDirectory的(字符串username,字符串密碼,字符串網域控制器){ 屬性=新屬性();如何匿名訪問Windows Active Directory?

properties.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory"); 
properties.put(Context.PROVIDER_URL, "LDAP://" + domainController); 
properties.put(Context.SECURITY_PRINCIPAL, username + "@" + domainController); 
properties.put(Context.SECURITY_CREDENTIALS, password); 

// initializing active directory LDAP connection 
try { 
    dirContext = new InitialDirContext(properties); 
} catch (NamingException e) { 
    LOG.severe(e.getMessage()); 
} 

// default domain base for search 
domainBase = getDomainBase(domainController); 

// initializing search controls 
searchCtls = new SearchControls(); 
searchCtls.setSearchScope(SearchControls.SUBTREE_SCOPE); 
searchCtls.setReturningAttributes(returnAttributes); 

}

所以我們可以看到,我需要爲了查詢在Active Directory用戶的數據擁有用戶名和密碼,但它不是我能夠得到所有用戶的密碼。我也嘗試將「密碼」設置爲「無」,它試圖使用匿名訪問,但它不起作用。 有誰知道是否可以匿名訪問Active Directory?我被告知在asp.net中,可以在不提供用戶名和密碼的情況下訪問活動目錄。我想知道它應該在Java中工作。我感謝任何幫助或例子。非常感謝。

回答

1
  1. 據我所知現在這是很罕見的,允許匿名登錄到LDAP服務器
  2. 向Active Directory服務器的管理員,如果1)(部分)允許
  3. 你並不需要有每個用戶訪問任何身體電話號碼的密碼;嘗試用一個帳戶來假冒您的JBoss應用程序專門設置爲你的web應用程序,剛剛足夠的權限讀取你所需要的
  4. 做任何LDAP程序使用一個很好的LDAP編輯器之前,看看你是否可以訪問你的東西需要。嘗試http://directory.apache.org/studio
+0

但是怎麼來的,可以在asp.net web應用程序來訪問? asp.net和java中的C +有沒有區別?或在asp.net中使用的對象和在java中使用的對象?我向公司的.net開發人員詢問了源代碼,似乎可以在不使用服務器綁定(通過使用用戶名和密碼)的情況下從活動目錄獲取員工數據。所以我想知道在.net中可能有類似的方式。有任何想法嗎? – smt 2014-11-22 16:39:32

+0

客戶端是否使用IE作爲瀏覽器?因爲IE可以將安全令牌傳遞給託管ASP.NET應用程序的IIS(以特定的MS方式)。如果DC信任IIS,它可以授予特殊權利。這也是一種您可能通過Kerberos實現的「自動登錄」(大量工作)。用3)去讓JBoss-App登錄到AD並要求提供任何所需的信息。電話號碼通常不是「內聯網意義上的」大祕密。 – Hille 2014-11-22 18:20:25

+0

是的,我們公司正在使用IE10和Windows 7,不知道我是否理解你的意思,這是否意味着使用IIS的asp.net Web應用程序可以訪問Active Directory而沒有任何問題?如果是這樣的話,.net和java在訪問AD中有所不同,我的java web應用程序使用Seam和Hibernate的JBoss 5。您能否通過使用「JBoss-App登錄到AD並詢問任何需要的信息?」來更詳細地瞭解如何獲得電話號碼。非常感謝, – smt 2014-11-22 19:59:44