根据sn和给定名称的3个字符动态分配唯一的UID值 [英] Assign unique UID value dynamically based upon 3 character of sn and givenname
本文介绍了根据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屋!
查看全文