ldap

刚进入公司,发现公司采用ldap对用户进行管理,今天就先从这个入手了。加油加油!!!
LDAP, X.500, and directory services密切相关。
一、ldap是什么?
ldap是ietf的标准栈协议,是light directionary access protrol的简称;
ldap的底层协议是x.500即dap,ldap负责的通信协议层是tcp/ip层,能够完成查询、修改、删除、添加功能。
二、名词解释
dn:distinguished name唯一性标识名
cn:common name
c:country
o:organization
ou:organization unit
dc:Domain Component
以上简称可以在schema文件中找到,用的时候查看就行。
三、建立链接
public static String INITCTX = "com.sun.jndi.ldap.LdapCtxFactory"; //驱动
public static String MY_HOST = "ldap://localhost:389"; //主机地址和端口
public static String MY_SEARCHBASE = "o=tcl,c=cn"; //基点入口
public static String MY_FILTER= "(mail=test@hotmail.com)"; //过滤条件
public static String MGR_DN="cn=manager,o=tcl,c=cn"; //用户名
public static String MGR_PW="secret"; //密码
public static DirContext createDirContext()
{
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY,INITCTX);
env.put(Context.PROVIDER_URL,MY_HOST);
env.put(Context.SECURITY_AUTHENTICATION,"simple");
//使用简单认证来认证用户
env.put(Context.SECURITY_PRINCIPAL,MGR_DN);
env.put(Context.SECURITY_CREDENTIALS,MGR_PW);
DirContext ctx = new InitialDirContext(env);
return ctx
}
四、添加新的数据。
public static void addEntry(DirContext context,String dn) throws NamingException {
Attributes attrs = new BasicAttributes();
attrs.put("sn","amy lee");
attrs.put("cn", "AmyLee");
attrs.put("telephoneNumber", "+1 408 555 0033");
attrs.put("userPassword", "redqueen".getBytes());
Attribute objclass = new BasicAttribute("objectClass");
objclass.add("person");
attrs.put(objclass); //指定schema为person,否则cn属性无法识别;
context.createSubcontext(dn, attrs);//dn是要加入的新数据的完整唯一性标识;
}
五、查询数据
public static void query()
{
SearchControls constraints = new SearchControls();
constraints.setSearchScope(SearchControls.SUBTREE_SCOPE);
NamingEnumeration results = ctx.search(MY_SEARCHBASE,MY_FILTER,constraints);

//打印查询结果
while (results != null && results.hasMore()){}

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值