美文网首页
让CAS服务端跑起来

让CAS服务端跑起来

作者: myfm289 | 来源:发表于2015-12-11 13:57 被阅读340次

    参考资料:安装 CAS 服务器

    注释

    1、下载方式

    http://central.maven.org/maven2/org/jasig/cas/cas-server-webapp/ 页面选择合适的版本,下载对应目录下的cas-server-webapp-version.war。

    2、初始登录

    在/WEB-INF/deployerConfigContext.xml中的

    <bean id="primaryAuthenticationHandler" class="org.jasig.cas.authentication.AcceptUsersAuthenticationHandler">
        <property name="users">
            <map>
                <entry key="casuser" value="Mellon"/>
            </map>
        </property>
    </bean>
    

    配置了初始认证方式,这里的username/passwordcasuser/Mellon

    修改认证方式

    配置CAS服务端通过查询数据库的方式认证用户。

    首先与Spring应用一样配置数据库,这里使用的是PostgreSQL数据库。

    <bean id="casDataSource" class="org.apache.commons.dbcp.BasicDataSource">
        <property name="driverClassName" value="org.postgresql.Driver" />
        <property name="url" value="jdbc:postgresql://localhost:5432/jemoii" />
        <property name="username" value="postgres" />
        <property name="password" value="password" />
        <property name="maxActive" value="20" />
        <property name="maxIdle" value="10" />
        <property name="maxWait" value="-1" />
    </bean>
    

    建立新的认证方式jdbcAuthenticationHandler,

    <bean id="jdbcAuthenticationHandler" class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler">
        <property name="dataSource" ref="casDataSource" />
        <property name="sql" value="select password from user_info where email = ?" />
        <property name="passwordEncoder">
            <bean class="me.voler.cas.AddSaltPasswordEncoder"/>
        </property>
    </bean>
    
    • dataSource属性即前面配置的数据库;
    • sql属性是一条SQL语句,功能即根据登录使用的username查询password,根据实际的table做相应的修改;
    • passwordEncoder属性是实现了org.jasig.cas.authentication.handler.PasswordEncoder接口的Bean。

    CAS本身提供了org.jasig.cas.authentication.handler.DefaultPasswordEncoderorg.jasig.cas.authentication.handler.PlainTextPasswordEncoder两种实现,这里根据实际的加密方式新建了me.voler.cas.AddSaltPasswordEncoder,即在rawPassword后面拼接自定义PASSWORD_SALT后再使用MD5加密。

    package me.voler.cas;
    
    import org.jasig.cas.authentication.handler.DefaultPasswordEncoder;
    import org.jasig.cas.authentication.handler.PasswordEncoder;
    
    public class AddSaltPasswordEncoder implements PasswordEncoder {
    
        private static final String PASSWORD_SALT = "xx";
    
        @Override
        public String encode(String password) {
            DefaultPasswordEncoder encoder = new DefaultPasswordEncoder("MD5");
            return encoder.encode(password + PASSWORD_SALT);
        }
    
    }
    

    应用新的认证方式jdbcAuthenticationHandler

    将deployerConfigContext.xml中id为authenticationManager的Bean的

        <constructor-arg>
            <map>
                <entry key-ref="proxyAuthenticationHandler" value-ref="proxyPrincipalResolver" />
                <entry key-ref="primaryAuthenticationHandler" value-ref="primaryPrincipalResolver" />
            </map>
        </constructor-arg>
    

    修改为

        <constructor-arg>
            <map>
                <entry key-ref="proxyAuthenticationHandler" value-ref="proxyPrincipalResolver" />
                <entry key-ref="jdbcAuthenticationHandler" value-ref="primaryPrincipalResolver" />
            </map>
        </constructor-arg>
    

    添加修改认证方式依赖的jar,在/WEB-INF/lib目录下添加

    • commons-pool-version.jar
    • commons-dbcp-version.jar
    • cas-server-support-jdbc-version.jar

    现在可以使用数据库中的username/password登录CAS服务端。

    相关文章

      网友评论

          本文标题:让CAS服务端跑起来

          本文链接:https://www.haomeiwen.com/subject/vjuyhttx.html