//Java code to read objectSID from LDAP (Active Directory)
import java.io.IOException;
import java.util.Hashtable;
import javax.naming.Context;
import javax.naming.NamingEnumeration;
import javax.naming.NamingException;
import javax.naming.directory.Attribute;
import javax.naming.directory.Attributes;
import javax.naming.directory.DirContext;
import javax.naming.directory.InitialDirContext;
import javax.naming.directory.SearchControls;
import javax.naming.directory.SearchResult;
public class LDAPSID {
public static String getObjectSID(String objectName) {
Hashtable env = new Hashtable(11);
env.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory");
//Domain
String dirRoot = "DC=ABCD,DC=CORP";
//LDAP User Name
String adminName = "CN=Rakesh,OU=XXX,OU=XXX,OU=XXX,DC=XXX";
//LDAP Password
String adminPassword ="password";
//Ldap URL
String ldapURL ="ldap://localhost:389";
env.put(Context.SECURITY_AUTHENTICATION,"simple");
env.put(Context.SECURITY_PRINCIPAL,adminName);
env.put(Context.SECURITY_CREDENTIALS,adminPassword);
env.put("com.sun.jndi.ldap.connect.pool", "true");
env.put("java.naming.ldap.attributes.binary","objectSID");
try {
env.put(Context.PROVIDER_URL, ldapURL);
env.put("com.sun.jndi.ldap.netscape.schemaBugs", "true");
DirContext ctx = new InitialDirContext(env);
SearchControls searchControls = new SearchControls();
searchControls.setSearchScope(SearchControls.SUBTREE_SCOPE);
String searchFilter = "(&(objectClass=user)(cn=" + objectName +"))";
String searchBase ="DC=ABCD,DC=CORP";
int totalResults = 0;
String returnedAtts[]={"cn","distinguishedName","objectSID"};
searchControls.setReturningAttributes(returnedAtts);
NamingEnumeration answer = ctx.search(searchBase, searchFilter, searchControls);
while (answer.hasMoreElements()) {
SearchResult sr = (SearchResult)answer.next();
Attributes attrs = sr.getAttributes();
if (attrs != null) {
try {
for (NamingEnumeration ae = attrs.getAll();ae.hasMore();) {
Attribute attr = (Attribute)ae.next();
System.out.println("CN :" +attrs.get("cn").get());
byte[] SID = (byte[])attrs.get("objectSID").get();
String strSID = getSIDasStringOfBytes(SID);
System.out.println("Object SID :" + strSID );
return strSID;
}
}
catch (NamingException e) {
System.err.println("Problem listing membership: " + e);
return "ERROR";
}
ctx.close();
}
}
} catch (NamingException ne) {
ne.printStackTrace();
System.out.println("Error: " + ne);
return "ERROR";
}
return "ERROR";
}
public static String getSIDasStringOfBytes(byte[] sid) {
String strSID = "";
int version;
long authority;
int count;
String rid = "";
strSID = "S";
// get version
version = sid[0];
strSID = strSID + "-" + Integer.toString(version);
for (int i=6; i>0; i--) {
rid += byte2hex(sid[i]);
}
// get authority
authority = Long.parseLong(rid);
strSID = strSID + "-" + Long.toString(authority);
//next byte is the count of sub-authorities
count = sid[7]&0xFF;
//iterate all the sub-auths
for (int i=0;i<count;i++) {
rid = "";
for (int j=11; j>7; j--) {
rid += byte2hex(sid[j+(i*4)]);
}
strSID = strSID + "-" + Long.parseLong(rid,16);
}
return strSID;
}
public static String byte2hex(byte b) {
String ret = Integer.toHexString((int)b&0xFF);
if (ret.length()<2) ret = "0"+ret;
return ret;
}
public static void main(String[] args) throws IOException {
//Search Filter is "CN"
getObjectSID("Rakesh K");
System.out.println("It's Done");
}
}
import java.io.IOException;
import java.util.Hashtable;
import javax.naming.Context;
import javax.naming.NamingEnumeration;
import javax.naming.NamingException;
import javax.naming.directory.Attribute;
import javax.naming.directory.Attributes;
import javax.naming.directory.DirContext;
import javax.naming.directory.InitialDirContext;
import javax.naming.directory.SearchControls;
import javax.naming.directory.SearchResult;
public class LDAPSID {
public static String getObjectSID(String objectName) {
Hashtable env = new Hashtable(11);
env.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory");
//Domain
String dirRoot = "DC=ABCD,DC=CORP";
//LDAP User Name
String adminName = "CN=Rakesh,OU=XXX,OU=XXX,OU=XXX,DC=XXX";
//LDAP Password
String adminPassword ="password";
//Ldap URL
String ldapURL ="ldap://localhost:389";
env.put(Context.SECURITY_AUTHENTICATION,"simple");
env.put(Context.SECURITY_PRINCIPAL,adminName);
env.put(Context.SECURITY_CREDENTIALS,adminPassword);
env.put("com.sun.jndi.ldap.connect.pool", "true");
env.put("java.naming.ldap.attributes.binary","objectSID");
try {
env.put(Context.PROVIDER_URL, ldapURL);
env.put("com.sun.jndi.ldap.netscape.schemaBugs", "true");
DirContext ctx = new InitialDirContext(env);
SearchControls searchControls = new SearchControls();
searchControls.setSearchScope(SearchControls.SUBTREE_SCOPE);
String searchFilter = "(&(objectClass=user)(cn=" + objectName +"))";
String searchBase ="DC=ABCD,DC=CORP";
int totalResults = 0;
String returnedAtts[]={"cn","distinguishedName","objectSID"};
searchControls.setReturningAttributes(returnedAtts);
NamingEnumeration answer = ctx.search(searchBase, searchFilter, searchControls);
while (answer.hasMoreElements()) {
SearchResult sr = (SearchResult)answer.next();
Attributes attrs = sr.getAttributes();
if (attrs != null) {
try {
for (NamingEnumeration ae = attrs.getAll();ae.hasMore();) {
Attribute attr = (Attribute)ae.next();
System.out.println("CN :" +attrs.get("cn").get());
byte[] SID = (byte[])attrs.get("objectSID").get();
String strSID = getSIDasStringOfBytes(SID);
System.out.println("Object SID :" + strSID );
return strSID;
}
}
catch (NamingException e) {
System.err.println("Problem listing membership: " + e);
return "ERROR";
}
ctx.close();
}
}
} catch (NamingException ne) {
ne.printStackTrace();
System.out.println("Error: " + ne);
return "ERROR";
}
return "ERROR";
}
public static String getSIDasStringOfBytes(byte[] sid) {
String strSID = "";
int version;
long authority;
int count;
String rid = "";
strSID = "S";
// get version
version = sid[0];
strSID = strSID + "-" + Integer.toString(version);
for (int i=6; i>0; i--) {
rid += byte2hex(sid[i]);
}
// get authority
authority = Long.parseLong(rid);
strSID = strSID + "-" + Long.toString(authority);
//next byte is the count of sub-authorities
count = sid[7]&0xFF;
//iterate all the sub-auths
for (int i=0;i<count;i++) {
rid = "";
for (int j=11; j>7; j--) {
rid += byte2hex(sid[j+(i*4)]);
}
strSID = strSID + "-" + Long.parseLong(rid,16);
}
return strSID;
}
public static String byte2hex(byte b) {
String ret = Integer.toHexString((int)b&0xFF);
if (ret.length()<2) ret = "0"+ret;
return ret;
}
public static void main(String[] args) throws IOException {
//Search Filter is "CN"
getObjectSID("Rakesh K");
System.out.println("It's Done");
}
}
Thanks for sharing these beautiful words
ReplyDeleteNitrazepam 10mg Tablets UK
Modafinil 200mg Tablets
Temazepam 20mg Tablets
Looking forward to your next post! Keep up the amazing work
ReplyDeleteBuy blue zopiclone tablets In UK
Buy Kamagra Oral Jelly UK
Tapentadol 100mg Tablets UK