1 16 17 25 package com.mvnsoft.auth.realm; 26 27 import java.security.MessageDigest ; 28 import java.security.Principal ; 29 import java.security.cert.X509Certificate ; 30 31 import org.apache.catalina.realm.JDBCRealm; 32 import org.apache.commons.logging.Log; 33 import org.apache.commons.logging.LogFactory; 34 35 import sun.misc.BASE64Encoder; 36 37 public class MVNTomcatJDBCRealm extends JDBCRealm { 38 39 private static Log log = LogFactory.getLog(MVNTomcatJDBCRealm.class); 40 41 protected String getPassword(String username) { 42 return super.getPassword(username); 44 } 45 46 public String getMD5_Base64(String input) { 47 MessageDigest digest = null; 51 try { 52 digest = MessageDigest.getInstance("MD5"); 53 } catch (Exception ex) { 54 log.fatal("Cannot get MessageDigest. Application may fail to run correctly.", ex); 55 } 56 if (digest == null) return input; 57 58 try { 60 digest.update(input.getBytes("UTF-8")); 61 } catch (java.io.UnsupportedEncodingException ex) { 62 log.error("Assertion: This should never occur."); 63 } 64 byte[] rawData = digest.digest(); 65 BASE64Encoder encoder = new BASE64Encoder(); 66 67 return encoder.encode(rawData); 68 } 69 70 protected String digest(String credentials) { 71 System.out.println("MVNTomcatJDBCRealm.digest()"); 72 return getMD5_Base64(credentials); 74 } 75 78 79 public Principal authenticate(String username, String password) { 80 String md5_base64 = getMD5_Base64(password); 81 System.out.println("Authenticate 2 params " + username + " and " + md5_base64); 82 return super.authenticate(username, password); 84 } 85 86 public Principal authenticate(String username, byte[] credentials) { 87 System.out.println("Authenticate byte"); 88 return super.authenticate(username, credentials); 89 } 90 91 public Principal authenticate(String username, String clientDigest, 92 String nOnce, String nc, String cnonce, 93 String qop, String realm, String md5a2) { 94 return super.authenticate(username, clientDigest, nOnce, nc, cnonce, 96 qop, realm, md5a2); 97 } 98 99 public Principal authenticate(X509Certificate [] certs) { 100 return super.authenticate(certs); 102 } 103 } | Popular Tags |