java - 如何以编程方式将用户帐户添加到 openDS?

标签 java ldap opends

我需要以编程方式向 openDS 服务器添加一些用户帐户,但即使在查看 openDS wiki 后我也不知道该怎么做。 。有人可以帮助我吗?

最佳答案

下面的代码使用jndi。这只会添加一个带有提供的密码的用户对象。这并不多。但这可能会帮助您入门。

此外,与 opends-sdk 相比,我更愿意坚持使用 jndi。

import java.util.Hashtable;
import javax.naming.Context;
import javax.naming.directory.BasicAttribute;
import javax.naming.directory.BasicAttributes;
import javax.naming.directory.InitialDirContext;
import javax.naming.directory.DirContext;
import javax.naming.directory.Attributes;
import javax.naming.directory.Attribute;
import javax.naming.NamingException;

public class App {

    /* Ugly HardCoded stuff */
    public static String ldapUri = "ldap://localhost:2389";
    public static String admindn = "cn=Directory Manager";
    public static String admincred = "password";
    public static String usersContainer = "ou=users,dc=example,dc=com";

    public static void main(String args[]){

    if (args.length != 2) {
        System.out.println("Usage: App userName password");
        return;
    }
    String username = args[0];
    String password = args[1];

    Hashtable env = new Hashtable();
    env.put(Context.INITIAL_CONTEXT_FACTORY,
        "com.sun.jndi.ldap.LdapCtxFactory");
    env.put(Context.PROVIDER_URL, ldapUri);
            env.put( Context.SECURITY_PRINCIPAL, admindn );
            env.put( Context.SECURITY_CREDENTIALS, admincred );
    try {
            DirContext ctx = new InitialDirContext(env);

        Attributes attrs = new BasicAttributes(true);

        Attribute objclass = new BasicAttribute("objectclass");
        objclass.add("top");
        objclass.add("inetorgperson");

        Attribute surname = new BasicAttribute("sn");
        surname.add(username);

        Attribute pwd = new BasicAttribute("userpassword");
        pwd.add(password);

        attrs.put(objclass);
        attrs.put(surname);
        attrs.put(pwd);

        ctx.createSubcontext("cn="+username+","+usersContainer, attrs);
        ctx.close();


    } catch (NamingException e) {
        e.printStackTrace();
    }


    }
 }

关于java - 如何以编程方式将用户帐户添加到 openDS?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5142375/

相关文章:

java 。如何生成其中包含一定数量的 1's and 0' 的所有整数?

java - Gradle:查找使用 + 导入的依赖项的已解析版本

java - 具有 JNDI.LDAP 的 LDAP 属性

java - 使用 Java 通过 SSL 的 LDAP

php - Unicode 字符无法在 opends 条目上正确显示

java - 如何更改MultipartFile的originalFilename

java - 在 T 类型的泛型类上,如果 T 是 List<E> 如何找到 E

ssl - 具有主机名验证策略 = ANY 的 ldaps 的 Keycloak 信任库仍然失败 "No subject alternative names"匹配

linux - openam/opends LDAP 连接错误

c# - .net ldap opends 读取自定义属性 0x8000500c