From: Jonathan O. <os...@us...> - 2009-11-13 23:06:18
|
Update of /cvsroot/dlsciences/dlese-tools-project/src/org/dlese/dpc/schemedit/security/auth In directory fdv4jf1.ch3.sourceforge.com:/tmp/cvs-serv27818 Modified Files: AuthUtils.java Log Message: supports asynchronous queries on UCAS people DB via the REST service Index: AuthUtils.java =================================================================== RCS file: /cvsroot/dlsciences/dlese-tools-project/src/org/dlese/dpc/schemedit/security/auth/AuthUtils.java,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** AuthUtils.java 5 Nov 2009 20:27:48 -0000 1.4 --- AuthUtils.java 13 Nov 2009 23:06:09 -0000 1.5 *************** *** 37,43 **** public class AuthUtils { ! private static boolean debug = false; public static NSDLLdapClient ldapClient = null; ! /** * Gets the loginModuleClass by parsing the login config file (which is --- 37,45 ---- public class AuthUtils { ! private static boolean debug = true; ! /** NOT YET DOCUMENTED */ public static NSDLLdapClient ldapClient = null; ! ! /** * Gets the loginModuleClass by parsing the login config file (which is *************** *** 50,60 **** String loginConfig = System.getProperty("java.security.auth.login.config"); prtln("Login Config raw: " + loginConfig); ! if (loginConfig == null) return null; ! loginConfig = loginConfig.trim(); ! while (loginConfig.indexOf("=") == 0) loginConfig = loginConfig.substring(1); ! prtln("Login Config: " + loginConfig); String conf = null; // content of config file --- 52,63 ---- String loginConfig = System.getProperty("java.security.auth.login.config"); prtln("Login Config raw: " + loginConfig); ! if (loginConfig == null) ! return null; ! loginConfig = loginConfig.trim(); ! while (loginConfig.indexOf("=") == 0) loginConfig = loginConfig.substring(1); ! prtln("Login Config: " + loginConfig); String conf = null; // content of config file *************** *** 77,81 **** } ! public static Document getLdapUserInfo (String username) throws Exception { if (ldapClient == null) { // throw Exception ("ldapClient not available"); --- 80,97 ---- } ! ! /** ! * Searches an LDAP directory and returns results in the form of a ! * dom4j.Document. Used by UserInfoAction.<p> ! * ! * NOTE: currently supports NSDL ldap only! ! * ! * @param searchString the search string ! * @param ldapField either "cn" or "uid" ! * @return The ldapUserInfo value ! * @exception Exception NOT YET DOCUMENTED ! */ ! public static Document getLdapUserInfo(String searchString, String ldapField) throws Exception { ! prtln("getLdapUserInfo() searchString: " + searchString + " ldapField: " + ldapField); if (ldapClient == null) { // throw Exception ("ldapClient not available"); *************** *** 83,129 **** ldapClient = new NSDLLdapClient(path); } ! LdapEntry[] entries = ldapClient.search( "ou=DefaultOrigin,dc=nsdl,dc=org", // base = null: start at top of DB tree ! "uid="+username, // filter ! new String[]{"cn", "mail"}, // attrNames = null: return all attributes ! 0); ! ! if (entries == null) { ! prtln ("entries are null"); ! return null; } - LdapEntry entry = entries[0]; - String name = getSingleAttrValue ("cn", entry); - String email = getSingleAttrValue ("mail", entry); - - Element root = DocumentHelper.createElement ("ldapInfo"); - Element userEl = root.addElement("user"); - userEl.setText (username); - Element nameEl = root.addElement("name"); - nameEl.setText (name); - Element mailEl = root.addElement("email"); - mailEl.setText (email); return DocumentHelper.createDocument(root); } ! ! static String getSingleAttrValue (String attrName, LdapEntry entry) { ! String [] vals = entry.getAttrStrings(attrName); ! if (vals != null) return vals[0]; return null; } ! ! public static String getLoginModule() throws Exception { String className = getLoginModuleClass(); if (className == null) ! throw new Exception ("login module not found"); ! prtln ("className: " + className); ! String [] splits = className.split("\\."); ! prtln ("splits.length: " + splits.length); ! return splits[splits.length -1]; } /** * Gets the class used for authentication for the current loginModule. --- 99,174 ---- ldapClient = new NSDLLdapClient(path); } ! ! String filter = null; ! if ("uid".equals(ldapField)) ! filter = "uid=" + searchString; ! else if ("cn".equals(ldapField)) ! filter = "cn=" + searchString; ! else ! throw new Exception("unrecognized ldapField: " + ldapField); ! LdapEntry[] entries = ldapClient.search( "ou=DefaultOrigin,dc=nsdl,dc=org", // base = null: start at top of DB tree ! filter, // filter ! new String[]{"cn", "mail"}, // attrNames = null: return all attributes ! 0); ! ! if (entries == null) ! prtln("entries is null"); ! else ! prtln(entries.length + " entries found"); ! ! Element root = DocumentHelper.createElement("ldapInfo"); ! if (entries != null && entries.length > 0) { ! for (int i = 0; i < entries.length; i++) { ! LdapEntry entry = entries[i]; ! Element entryEl = root.addElement("entry"); ! ! String uid = ldapClient.getUid(entry.getDn()); ! if (uid == null) { ! prtln("got null uid for \"" + entry.getDn() + "\""); ! continue; ! } ! ! String name = getSingleAttrValue("cn", entry); ! String email = getSingleAttrValue("mail", entry); ! ! Element userEl = entryEl.addElement("uid"); ! userEl.setText(uid); ! Element nameEl = entryEl.addElement("name"); ! nameEl.setText(name != null ? name : ""); ! Element mailEl = entryEl.addElement("email"); ! mailEl.setText(email != null ? email : ""); ! } } return DocumentHelper.createDocument(root); } ! ! ! static String getSingleAttrValue(String attrName, LdapEntry entry) { ! String[] vals = entry.getAttrStrings(attrName); ! if (vals != null && vals.length > 0) return vals[0]; return null; } ! ! ! /** ! * Gets the name of the class used to implement loginModule. ! * ! * @return The loginModule classes name ! * @exception Exception NOT YET DOCUMENTED ! */ public static String getLoginModule() throws Exception { String className = getLoginModuleClass(); if (className == null) ! throw new Exception("login module not found"); ! prtln("className: " + className); ! String[] splits = className.split("\\."); ! prtln("splits.length: " + splits.length); ! return splits[splits.length - 1]; } + /** * Gets the class used for authentication for the current loginModule. *************** *** 137,141 **** String loginModule = getLoginModuleClass(); String authClass = null; ! if ("org.dlese.dpc.schemedit.security.login.FileLogin".equals(loginModule)) return new FileAuth(username, password); --- 182,186 ---- String loginModule = getLoginModuleClass(); String authClass = null; ! if ("org.dlese.dpc.schemedit.security.login.FileLogin".equals(loginModule)) return new FileAuth(username, password); *************** *** 181,188 **** /** ! * NOT YET DOCUMENTED * ! * @param tokens NOT YET DOCUMENTED ! * @return NOT YET DOCUMENTED */ public static String joinTokens(List tokens) { --- 226,233 ---- /** ! * Joins a list of tokens into a comma-delimited string * ! * @param tokens list to be joined ! * @return string of joined values */ public static String joinTokens(List tokens) { *************** *** 192,199 **** /** ! * NOT YET DOCUMENTED * ! * @param tokens NOT YET DOCUMENTED ! * @param joinStr NOT YET DOCUMENTED * @return NOT YET DOCUMENTED */ --- 237,244 ---- /** ! * Joins a list of tokens using provided delimiter. * ! * @param tokens list to be joined ! * @param joinStr string to be inserted between tokens * @return NOT YET DOCUMENTED */ *************** *** 262,266 **** static void prtln(String s) { if (debug) ! SchemEditUtils.prtln (s, "AuthUtils"); } } --- 307,311 ---- static void prtln(String s) { if (debug) ! SchemEditUtils.prtln(s, "AuthUtils"); } } |