在我的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中工作。我感謝任何幫助或例子。非常感謝。
但是怎麼來的,可以在asp.net web應用程序來訪問? asp.net和java中的C +有沒有區別?或在asp.net中使用的對象和在java中使用的對象?我向公司的.net開發人員詢問了源代碼,似乎可以在不使用服務器綁定(通過使用用戶名和密碼)的情況下從活動目錄獲取員工數據。所以我想知道在.net中可能有類似的方式。有任何想法嗎? – smt 2014-11-22 16:39:32
客戶端是否使用IE作爲瀏覽器?因爲IE可以將安全令牌傳遞給託管ASP.NET應用程序的IIS(以特定的MS方式)。如果DC信任IIS,它可以授予特殊權利。這也是一種您可能通過Kerberos實現的「自動登錄」(大量工作)。用3)去讓JBoss-App登錄到AD並要求提供任何所需的信息。電話號碼通常不是「內聯網意義上的」大祕密。 – Hille 2014-11-22 18:20:25
是的,我們公司正在使用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