在我的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