如何用JNDI&LDAP访问AD里面组成员的属性?在线!

风清扬-3 2003-05-24 03:09:53
我作权限管理,如何用ldap,jndi访问活动目录里的组成员的属性?
...全文
51 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
buick555 2003-05-30
  • 打赏
  • 举报
回复
一般来说,Directory是靠DN来作为区别一条记录的唯一标识。DN的形式一般是这样
sn=buick555, ou=Java Dev, o=development, com=buick.com等
你可以看出DN是从右到左范围减小的。所以,要先给出一个范围o=Airius.com(上程序)一般是一个根
可以给出一个过滤器sn=Carter
这样就可以查找了。希望再查阅AD的相关文档
风清扬-3 2003-05-30
  • 打赏
  • 举报
回复
先谢谢斑竹,我也有这段代码!不过有以下几处不明,还请斑竹指教!
我们总工要用microsoft AD活动目录,比如我们的域名是appdomain.edu.com.cn,下面有一个组是appDev,appDev里面有一个用户hdc,我如何查找组的全部信息或个人信息?
buick555 2003-05-28
  • 打赏
  • 举报
回复
这是访问iPlanet Directory Server的方法。
DN(distinguish name)一定要写对!
buick555 2003-05-28
  • 打赏
  • 举报
回复
// Standard anonymous search
import java.util.Hashtable;
import java.util.Enumeration;

import javax.naming.*;
import javax.naming.directory.*;

public class JNDISearch {

// Initial context implementation
public static String INITCTX = "com.sun.jndi.ldap.LdapCtxFactory";
public static String MY_HOST = "ldap://localhost:389";
public static String MY_SEARCHBASE = "o=Airius.com";
public static String MY_FILTER = "(sn=Carter)";

public static void main(String args[]) {
try {

// Hashtable for environmental information
Hashtable env = new Hashtable();

// Specify which class to use for our JNDI provider
env.put(Context.INITIAL_CONTEXT_FACTORY, INITCTX);

// Specify host and port to use for directory service
env.put(Context.PROVIDER_URL, MY_HOST);

// Get a reference to a directory context
DirContext ctx = new InitialDirContext(env);

// Specify the scope of the search
SearchControls constraints = new SearchControls();
constraints.setSearchScope(SearchControls.SUBTREE_SCOPE);

// Perform the actual search
// We give it a searchbase, a filter and a the constraints
// containing the scope of the search
NamingEnumeration results = ctx.search(MY_SEARCHBASE,
MY_FILTER, constraints);

// Now step through the search results
while (results != null && results.hasMore()) {
SearchResult sr = (SearchResult) results.next();

String dn = sr.getName();
System.out.println("Distinguished Name is " + dn);

Attributes attrs = sr.getAttributes();

for (NamingEnumeration ne = attrs.getAll();
ne.hasMoreElements(); ) {
Attribute attr = (Attribute) ne.next();
String attrID = attr.getID();

System.out.println(attrID + ":");
for (Enumeration vals = attr.getAll();
vals.hasMoreElements(); ) {
System.out.println("\t" + vals.nextElement());
}
}
System.out.println("\n");
}
} catch (Exception e) {
e.printStackTrace();
System.exit(1);
}
}
}

风清扬-3 2003-05-27
  • 打赏
  • 举报
回复
大家发言呀!
风清扬-3 2003-05-27
  • 打赏
  • 举报
回复
up

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧