2023年6月21日发(作者:)
ldap增删改查package test2;import edReader;import treamReader;import ation;import ties;import Enumeration;import Exception;import ute;import utes;import ttribute;import ttributes;import text;import lDirContext;import cationItem;import Controls;import Result;public class Test {public static DirContext dc; //相当于这个树的⼀个映像public static void conn(){String dn="cn=Manager,dc=my-domain,dc=com"; //包括连接LDAP服务器的⽤户及要操作的根节点Properties env = new Properties();(L_CONTEXT_FACTORY,"xFactory");(ER_URL, "ldap://localhost:" + 389);if (dn != null) {(TY_PRINCIPAL, dn);(TY_CREDENTIALS, "secret");}try {dc = new InitialDirContext(env);n("连接成功");} catch (NamingException e) {tackTrace();}}public static void deleteInformation(){try {ySubcontext("cn=mm,ou=ppeople,dc=my-domain,dc=com");n("删除成功");} catch (NamingException ne) {tackTrace();}}public static void addInformation(){try{Attributes attrs = new BasicAttributes();("uid", "alee");("sn","Lee");("telephoneNumber", "");("userPassword","redqueen".getBytes());BasicAttribute objectclass = new BasicAttribute("objectclass");("uidObject");("person");(objectclass);Subcontext("cn=mm,ou=ppeople,dc=my-domain,dc=com", attrs);n("添加成功");} catch (Exception ne) {tackTrace();n("添加失败");}}public static void modifyInformation(String dn){try {ModificationItem[] mods = new ModificationItem[1];mods[0] = new ModificationItem(E_ATTRIBUTE, new BasicAttribute("sn", "qm"));// 所修改的属性Attributes(dn,mods);n("修改成功");} catch (NamingException ne) {tackTrace();}}public static void search() {// 我只能按照某些属性查找节点,偶还不会怎么查找⼀个⽬录或按照更复杂的正则式查找特定节点/⽬录try {SearchControls constraints = new SearchControls();rchScope(E_SCOPE);("what would you want to search:");BufferedReader bd = new BufferedReader(new InputStreamReader());String s = ne();NamingEnumeration en = ("dc=my-domain,dc=com", "uid=" + s, constraints); // 要查询的UID。如果是*则可以查到所有UID的节点if (en == null) {n("Have no NamingEnumeration.");}if (!eElements()) {n("Have no element.");}while (en != null && eElements()) {// 可以查出多个元素Object obj = ement();if (obj instanceof SearchResult) {SearchResult si = (SearchResult) obj;n("/tname: " + e());Attributes attrs = ributes();if (attrs == null) {n("/tNo attributes");} else {for (NamingEnumeration ae = (); eElements();) {// 获得该节点的所有属性Attribute attr = (Attribute) ();// 下⼀属性String attrId = ();// 获得该属性的属性名for (Enumeration vals = (); eElements();) {// 获得⼀个属性中的所有属性值("/t/t" + attrId + ": ");Object o = ement();// 下⼀属性值if (o instanceof byte[])n(new String((byte[]) o));n(o);}}}} else {n(obj);}n();}} catch (Exception e) {tackTrace();}}public static void main(String[] args) {conn();addInformation();deleteInformation();modifyInformation("uid=jdoe,ou=people,dc=my-domain,dc=com");search();try {();} catch (NamingException e) {tackTrace();}}}
2023年6月21日发(作者:)
ldap增删改查package test2;import edReader;import treamReader;import ation;import ties;import Enumeration;import Exception;import ute;import utes;import ttribute;import ttributes;import text;import lDirContext;import cationItem;import Controls;import Result;public class Test {public static DirContext dc; //相当于这个树的⼀个映像public static void conn(){String dn="cn=Manager,dc=my-domain,dc=com"; //包括连接LDAP服务器的⽤户及要操作的根节点Properties env = new Properties();(L_CONTEXT_FACTORY,"xFactory");(ER_URL, "ldap://localhost:" + 389);if (dn != null) {(TY_PRINCIPAL, dn);(TY_CREDENTIALS, "secret");}try {dc = new InitialDirContext(env);n("连接成功");} catch (NamingException e) {tackTrace();}}public static void deleteInformation(){try {ySubcontext("cn=mm,ou=ppeople,dc=my-domain,dc=com");n("删除成功");} catch (NamingException ne) {tackTrace();}}public static void addInformation(){try{Attributes attrs = new BasicAttributes();("uid", "alee");("sn","Lee");("telephoneNumber", "");("userPassword","redqueen".getBytes());BasicAttribute objectclass = new BasicAttribute("objectclass");("uidObject");("person");(objectclass);Subcontext("cn=mm,ou=ppeople,dc=my-domain,dc=com", attrs);n("添加成功");} catch (Exception ne) {tackTrace();n("添加失败");}}public static void modifyInformation(String dn){try {ModificationItem[] mods = new ModificationItem[1];mods[0] = new ModificationItem(E_ATTRIBUTE, new BasicAttribute("sn", "qm"));// 所修改的属性Attributes(dn,mods);n("修改成功");} catch (NamingException ne) {tackTrace();}}public static void search() {// 我只能按照某些属性查找节点,偶还不会怎么查找⼀个⽬录或按照更复杂的正则式查找特定节点/⽬录try {SearchControls constraints = new SearchControls();rchScope(E_SCOPE);("what would you want to search:");BufferedReader bd = new BufferedReader(new InputStreamReader());String s = ne();NamingEnumeration en = ("dc=my-domain,dc=com", "uid=" + s, constraints); // 要查询的UID。如果是*则可以查到所有UID的节点if (en == null) {n("Have no NamingEnumeration.");}if (!eElements()) {n("Have no element.");}while (en != null && eElements()) {// 可以查出多个元素Object obj = ement();if (obj instanceof SearchResult) {SearchResult si = (SearchResult) obj;n("/tname: " + e());Attributes attrs = ributes();if (attrs == null) {n("/tNo attributes");} else {for (NamingEnumeration ae = (); eElements();) {// 获得该节点的所有属性Attribute attr = (Attribute) ();// 下⼀属性String attrId = ();// 获得该属性的属性名for (Enumeration vals = (); eElements();) {// 获得⼀个属性中的所有属性值("/t/t" + attrId + ": ");Object o = ement();// 下⼀属性值if (o instanceof byte[])n(new String((byte[]) o));n(o);}}}} else {n(obj);}n();}} catch (Exception e) {tackTrace();}}public static void main(String[] args) {conn();addInformation();deleteInformation();modifyInformation("uid=jdoe,ou=people,dc=my-domain,dc=com");search();try {();} catch (NamingException e) {tackTrace();}}}
发布评论