custom sso :cas
sportsbaby1980 Aug 26, 2008 11:20 PMI have done cas sso with jboss portal successfully.
Now I want to use our userinfo database for Authenticate.
I write a new CASAuthenticationService implements AuthenticationService
instead of the CASAuthenticationService in the portal-identity-sso-lib.jar.
public class CASAuthenticationService implements AuthenticationService{ private final static Logger logger = Logger.getLogger(CASAuthenticationService.class); private String datasource = null; private String queryPasswordByUserNameSql = null; public String getQueryPasswordByUserNameSql() { return queryPasswordByUserNameSql; } public void setQueryPasswordByUserNameSql(String queryPasswordByUserNameSql) { this.queryPasswordByUserNameSql = queryPasswordByUserNameSql; } public String getDatasource() { return datasource; } public void setDatasource(String datasource) { this.datasource = datasource; } public void start(){ } public void stop(){ } @Override public boolean authenticate(String userName, String password) { logger.info("userName="+userName+",password="+password); Connection c = null; PreparedStatement ps = null; ResultSet rs = null; try { Context ctx = new InitialContext(); DataSource ds = (DataSource) ctx.lookup(this.datasource); c = ds.getConnection(); ps = c.prepareStatement(this.queryPasswordByUserNameSql); ps.setString(1, userName); rs = ps.executeQuery(); if(rs!=null&&rs.next()){ String tmpPassword = rs.getString(1); tmpPassword = EncryptHelper.dencrypt(tmpPassword); logger.info("password equals="+(password.equals(tmpPassword))); return password.equals(tmpPassword); } } catch (Exception e) { e.printStackTrace(); logger.error(e); return false; }finally{ try{ if(rs!=null){ rs.close(); } if(ps!=null){ ps.close(); } if(!c.isClosed()){ c.close(); } }catch(Exception e){ logger.error(e); } } return false; } }
<mbean code="test.portal.identity.sso.cas.crm.CASAuthenticationService" name="portal:service=Module,type=CASAuthenticationService" xmbean-dd="" xmbean-code="org.jboss.portal.jems.as.system.JBossServiceModelMBean"> <xmbean/> <attribute name="Datasource">java:/jdbc/CRM</attribute> <attribute name="QueryPasswordByUserNameSql">select password from personinfo where userCode=?</attribute> </mbean>
I deploy the jar and start server.
It runs well.
and the CASAuthenticationService ruturn true after sign in,cas server gives a ticket too.
But portal still redirect to a portal login page.
I am wondering and puzled.
I need help.
thanks