Java 如何匿名访问windows Active Directory?
在我的JavaWeb(JBoss)应用程序中,我需要从Active Directory获取数据。基本上,我知道员工的用户ID(windows登录ID),我需要知道他/她的办公室电话号码。我认为唯一包含员工手机的地方是Windows Active Directory。因此,我尝试了一些示例java代码,并尝试访问Active Directory。下面是一个示例代码() 我们可以看到,为了在active directory中查询用户的数据,我需要用户名和密码,但不可能获取所有用户的密码。我还尝试将“password”设置为“none”,尝试使用匿名访问,但不起作用。 有人知道是否可以匿名访问Active directory吗?在asp.net中,我被告知,不提供用户id和密码就可以访问active directory。我想知道它也应该在Java中工作。我感谢任何帮助或例子。非常感谢Java 如何匿名访问windows Active Directory?,java,ldap,jndi,Java,Ldap,Jndi,在我的JavaWeb(JBoss)应用程序中,我需要从Active Directory获取数据。基本上,我知道员工的用户ID(windows登录ID),我需要知道他/她的办公室电话号码。我认为唯一包含员工手机的地方是Windows Active Directory。因此,我尝试了一些示例java代码,并尝试访问Active Directory。下面是一个示例代码() 我们可以看到,为了在active directory中查询用户的数据,我需要用户名和密码,但不可能获取所有用户的密码。我还尝试将“
但是,为什么可以在asp.net web应用程序中访问?asp.net中的C+和java之间有什么区别吗?还是asp.net中使用的对象和java中使用的对象?我向公司的.net开发人员询问了源代码,似乎可以不使用服务器绑定(通过使用用户ID和密码)从active directory获取员工数据。所以我想知道可能有一种类似于.net中使用的方法。有什么想法吗?客户是否使用IE作为浏览器?因为IE可能会将安全令牌传递给承载ASP.NET应用程序的IIS(以特定的MS方式)。如果DC信任IIS,则可授予其特殊权利。这也是一种通过Kerberos实现的“自动登录”(需要大量工作)。使用3)并让JBoss应用程序登录到广告中,询问所需的任何信息。电话号码通常不是“内联网意义上”的一个大秘密。是的,我们公司正在使用IE10和windows 7,不确定我是否理解你的意思,这是否意味着带有IIS的asp.net web应用可以毫无问题地访问Active Directory?如果是这种情况,.net和java在access广告中确实有不同之处,那么我的java web应用程序将使用JBoss 5以及Seam和Hibernate。您能否更详细地介绍如何使用“JBoss应用程序登录广告并询问所需信息”获取手机。谢谢,
public ActiveDirectory(String username, String password, String domainController) {
properties = new Properties();
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);
}