package com.ucit.cas;
import java.security.NoSuchAlgorithmException;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
import org.apache.jetspeed.security.SecurityException;
import org.apache.jetspeed.security.spi.impl.MessageDigestCredentialPasswordEncoder;
import org.jasig.cas.adaptors.jdbc.AbstractJdbcUsernamePasswordAuthenticationHandler;
import org.jasig.cas.authentication.handler.AuthenticationException;
import org.jasig.cas.authentication.principal.UsernamePasswordCredentials;
import org.springframework.jdbc.core.simple.ParameterizedRowMapper;
public final class UCITCASAuthHandler extends
AbstractJdbcUsernamePasswordAuthenticationHandler {
protected boolean authenticateUsernamePasswordInternal(
UsernamePasswordCredentials credentials)
throws AuthenticationException {
String username = credentials.getUsername();
String password = credentials.getPassword();
try {
MessageDigestCredentialPasswordEncoder encoder = new MessageDigestCredentialPasswordEncoder();
/*List<String> list = getJdbcTemplate().query(
"SELECT column_value FROM security_principal p,"
+ "security_credential c where p.full_path=? and "
+ "c.principal_id=p.principal_id",
new ParameterizedRowMapper<String>() {
public String mapRow(ResultSet rs, int index)
throws SQLException {
return rs.getString(1);
}
}, "/user/" + username);*/
List<String> list = getJdbcTemplate().query(
"select column_value from porta_user pu where pu.full_path=? ",
new ParameterizedRowMapper<String>() {
public String mapRow(ResultSet rs, int index)
throws SQLException {
return rs.getString(1);
}
}, "/user/" + username);
return list.isEmpty() ? aliasCheck(username, password,credentials) : list.get(0)
.equals(encoder.encode(username, password));
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
private boolean aliasCheck(String username, String password,UsernamePasswordCredentials credentials) {
try {
MessageDigestCredentialPasswordEncoder encoder = new MessageDigestCredentialPasswordEncoder();
List<String[]> list = getJdbcTemplate().query(
"select column_value,full_path from porta_user where alias=?",
new ParameterizedRowMapper<String[]>() {
public String[] mapRow(ResultSet rs, int index)
throws SQLException {
return new String[]{rs.getString(1),rs.getString(2)};
}
}, username);
if (list.isEmpty())
return verify(username, password);
else{
String _username=list.get(0)[1].replaceAll("/user/", "");
credentials.setUsername(_username);
return list.get(0)[0].equals(encoder.encode(_username, password));
}
// return list.isEmpty() ? verify(username, password) : list.get(0)
// .equals(encoder.encode(username, password));
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
return false;
}
}
private boolean verify(String username, String password) {
List<String> list = getJdbcTemplate().query(
"SELECT uid FROM user where ULoginID=? and upass=?",
new ParameterizedRowMapper<String>() {
public String mapRow(ResultSet rs, int index)
throws SQLException {
return rs.getString(1);
}
}, username, password);
return !list.isEmpty();
}
public static void main(String[] args) throws NoSuchAlgorithmException, SecurityException {
MessageDigestCredentialPasswordEncoder encoder = new MessageDigestCredentialPasswordEncoder();
System.out.println(encoder.encode("510722197305041435", "7788119"));
}
}
下载项目
https://9p9q8w.blu.livefilestore.com/y1p0ioo0EVb55XY-YbpBePUgmee5w3lcGPIzWOsknbo-6BvbinZZAPtsPMkOKD0kZ0vuJgaOwqrodOx6FmcbTVMWDQPYU_HGEQT/cas(2010-06-08%E9%87%8D%E5%86%99%E7%99%BB%E9%99%86%E9%AA%8C%E8%AF%81%2C%E6%94%AF%E6%8C%81%E5%88%AB%E5%90%8D%E7%99%BB%E9%99%86).zip?download&psid=1
浙公网安备 33010602011771号