根据sn和给定名称的3个字符动态分配唯一的UID值 [英] Assign unique UID value dynamically based upon 3 character of sn and givenname

查看:83
本文介绍了根据sn和给定名称的3个字符动态分配唯一的UID值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何检查UID是否已经存在.如果存在,则为新用户增加一个值,其中包含名字和姓氏的3个字母.如果没有UId,请分配UID的值...并存储在eDirectory中.

How to check whether the UID are present already. If it's present increment one value for the new user with 3 letters of first name and last name. If UId are not present Assign the value of UID ...and store in eDirectory..

public class searchattribute
{
   public static void main (String[] args)
{

    Hashtable env = new Hashtable();
    String adminName = "cn=admin,o=novell";
    String adminPassword = "Happiest1";
    String ldapURL = "ldaps://10.18.26.192:636";

    //Access the keystore, this is where the Root CA public key cert was installed
    //Could also do this via the command line option java -Djavax.net.ssl.trustStore....
    //No need to specifiy the keystore password for read operations
    String keystore = "C:\\Users\\durga.tiruvakkad\\Desktop\\cert.keystore";
    System.setProperty("javax.net.ssl.trustStore",keystore);

    env.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory");

    //set security credentials
    env.put(Context.SECURITY_AUTHENTICATION,"simple");
    env.put(Context.SECURITY_PRINCIPAL,adminName);
    env.put(Context.SECURITY_CREDENTIALS,adminPassword);

    //specify use of ssl
    env.put(Context.SECURITY_PROTOCOL,"ssl");

    //connect to my domain controller
    env.put(Context.PROVIDER_URL,ldapURL);
    try {

        // Create the initial directory context
        DirContext ctx = new InitialLdapContext(env,null);

        //Create the search controls        
        SearchControls searchCtls = new SearchControls();

        //Specify the attributes to return
        String returnedAtts[]={"sn","givenName","UID"};
        searchCtls.setReturningAttributes(returnedAtts);

        //Specify the search scope
        searchCtls.setSearchScope(SearchControls.SUBTREE_SCOPE);

        //specify the LDAP search filter
        String searchFilter = "(&(objectClass=user)(UID=*))";

        //Specify the Base for the search
        String searchBase = "ou=FWCMS,o=novell";

        //initialize counter to total the results
        int totalResults = 0;


        // Search for objects using the filter
        NamingEnumeration answer = ctx.search(searchBase, searchFilter, searchCtls);

        //Loop through the search results
        while (answer.hasMoreElements()) {
                SearchResult sr = (SearchResult)answer.next();

            totalResults++;

            System.out.println(">>>" + sr.getName());

            // Print out some of the attributes, catch the exception if the attributes have no values
            Attributes attrs = sr.getAttributes();
            if (attrs != null) {
                try {
                System.out.println("   surname: " + attrs.get("sn").get());
                System.out.println("   firstname: " + attrs.get("givenName").get());
                System.out.println("   UID: " + attrs.get("UID").get());
                                    } 
                catch (NullPointerException e)  {
                System.out.println("Errors listing attributes: " + e);
                }
            }

        }

        System.out.println("Total results: " + totalResults);
        ctx.close();

    } 
    catch (NamingException e) {
        System.err.println("Problem searching directory: " + e);
    }
    }
}

}

如果用户名相同,那么它必须在搜索中签入并且如果用户在场,则必须增加其值

if the name oof the user same so it must check in search and if the user is present it must increment its value

推荐答案

public class searchattribute {
public static void main(String[] args) {

    Hashtable env = new Hashtable();
    String adminName = "cn=admin,o=novell";
    String adminPassword = "Happiest1";
    String ldapURL = "ldaps://10.18.26.192:636";

    // Access the keystore, this is where the Root CA public key cert was
    // installed
    // Could also do this via the command line option java
    // -Djavax.net.ssl.trustStore....
    // No need to specifiy the keystore password for read operations
    String keystore = "C:\\Users\\durga.tiruvakkad\\Desktop\\cert.keystore";
    System.setProperty("javax.net.ssl.trustStore", keystore);

    env.put(Context.INITIAL_CONTEXT_FACTORY,
            "com.sun.jndi.ldap.LdapCtxFactory");

    // set security credentials
    env.put(Context.SECURITY_AUTHENTICATION, "simple");
    env.put(Context.SECURITY_PRINCIPAL, adminName);
    env.put(Context.SECURITY_CREDENTIALS, adminPassword);

    // specify use of ssl
    env.put(Context.SECURITY_PROTOCOL, "ssl");

    // connect to my domain controller
    env.put(Context.PROVIDER_URL, ldapURL);
    try {

        // Create the initial directory context
        DirContext ctx = new InitialLdapContext(env, null);

        Attribute attr = ctx.getAttributes("sn").get("UID");
        String uid = (String) attr.get();

        // Create the search controls
        SearchControls searchCtls = new SearchControls();

        // Specify the attributes to return
        String returnedAtts[] = { "sn", "givenName", "UID" };
        searchCtls.setReturningAttributes(returnedAtts);

        // Specify the search scope
        searchCtls.setSearchScope(SearchControls.SUBTREE_SCOPE);

        // specify the LDAP search filter
        String searchFilter = "(&(objectClass=user)(UID=*))";

        // Specify the Base for the search
        String searchBase = "ou=FWCMS,o=novell";

        // initialize counter to total the results
        int totalResults = 0;

        // Search for objects using the filter
        NamingEnumeration answer = ctx.search(searchBase, searchFilter,
                searchCtls);

        // Loop through the search results
        while (answer.hasMoreElements()) {
            SearchResult sr = (SearchResult) answer.next();

            totalResults++;

            System.out.println(">>>" + sr.getName());

            // Print out some of the attributes, catch the exception if the
            // attributes have no values
            Attributes attrs = sr.getAttributes();
            if (attrs != null) {
                try {
                    int count = 0;
                    System.out.println("   surname: "
                            + attrs.get("sn").get());

                    String lastName = (String) attrs.get("sn").get();

                    System.out.println("   firstname: "
                            + attrs.get("givenName").get());

                    String firstName = (String) attrs.get("givenName")
                            .get();

                    if (attrs.get("UID").toString().contains("GIVENUID")) {
                        count++;
                        attrs.get("UID").get().toString()
                                .concat(firstName.substring(0, 3))
                                .concat(lastName.substring(0, 3))
                                .concat(String.valueOf(count));
                    }
                    System.out.println("   UID: " + attrs.get("UID").get());

                } catch (NullPointerException e) {
                    System.out.println("Errors listing attributes: " + e);
                }
            }

        }

        System.out.println("Total results: " + totalResults);
        ctx.close();

    } catch (NamingException e) {
        System.err.println("Problem searching directory: " + e);
    }
}

}

这篇关于根据sn和给定名称的3个字符动态分配唯一的UID值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆