2014-11-22 170 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