【问题标题】:How to access windows Active Directory anonymously?如何匿名访问 Windows Active Directory?
【发布时间】:2014-11-22 15:38:22
【问题描述】:

在我的 Java Web (JBoss) 应用程序中,我需要从 Active Directory 获取数据。基本上,我知道员工的用户 ID(Windows 登录 ID),并且我需要知道他/她的办公室电话号码。我认为唯一包含员工电话的地方是 Windows Active Directory。所以我尝试了一些示例 java 代码并尝试访问 Active Directory。这是一个示例代码 (http://myjeeva.com/querying-active-directory-using-java.html)

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);
}

我们可以看到我需要有用户名和密码才能在活动目录中查询用户的数据,但我无法获取所有用户的密码。我还尝试将“密码”设置为“无”,尝试使用匿名访问,但它不起作用。 有人知道是否可以匿名访问 Active Directory 吗?我在 asp.net 中被告知,可以在不提供用户 ID 和密码的情况下访问活动目录。我想知道它也应该在 Java 中工作。我感谢任何帮助或示例。非常感谢。

【问题讨论】:

    标签: java ldap jndi


    【解决方案1】:
    1. AFAIK 现在允许匿名登录到 ldap 服务器已经非常少见了
    2. 询问 Active Directory 服务器的管理员,如果(部分)允许 1)
    3. 您无需拥有每个用户的密码即可访问任何人的电话号码;尝试使用专门为您的 Web 应用设置的单个帐户来模拟您的 JBoss 应用,拥有足够的权限来阅读您需要的内容
    4. 在进行任何 LDAP 编程之前,请使用良好的 LDAP 编辑器来查看您是否可以访问所需的内容。尝试例如http://directory.apache.org/studio

    【讨论】:

    • 但是怎么可以在asp.net web应用程序中访问呢? asp.net和java中的C+有什么区别吗?或在 asp.net 中使用的对象和在 java 中使用的对象?我向我公司的 .net 开发人员询问了源代码,似乎可以在不使用服务器绑定(通过使用用户 ID 和密码)的情况下从 Active Directory 获取员工数据。所以我想知道可能有与他们在.net中使用的类似方式。有什么想法吗?
    • 客户端是否使用IE作为浏览器?因为 IE 可能会将安全令牌传递给托管 ASP.NET 应用程序的 IIS(以特定的 MS 方式)。如果 DC 信任 IIS,它可能会授予特殊权限。这也是您可以使用 Kerberos 实现的一种“自动登录”(大量工作)。使用 3) 并让 JBoss-App 登录 AD 并询问所需的任何信息。电话号码通常不是“内部网意义上的”大秘密。
    • 是的,我们公司使用的是 IE10 和 windows 7,不知道我是否理解你的意思,这是否意味着带有 IIS 的 asp.net Web 应用程序可以毫无问题地访问 Active Directory?如果是这种情况,.net 和 java 在访问 AD 方面确实不同,我的 java Web 应用程序使用 JBoss 5 和 Seam 和 Hibernate。您能否更详细地了解如何通过使用“JBoss-App 登录 AD 并询问所需的任何信息”来获取电话号码?非常感谢,
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-26
    相关资源
    最近更新 更多