美文网首页sercurity
搭建CAS开发环境

搭建CAS开发环境

作者: 小孩真笨 | 来源:发表于2017-10-04 11:59 被阅读616次

    CAS是中央认证系统,由于官网不提供二进制发布包,因此,需要自己下载进行编译,简要记录一下步骤。

    最小化部署

    只有4.0系列才能使用maven编译,之后的都转为gradle编译了。

    1. 下载4.x系列的代码

    点击下载4.0系列的源代码。

    2. 编译打包与部署
    1. 将下载的源码包使用IDEA打开项目,并导入成maven项目。
    2. 进入到cas-server-webapp 项目下,执行命令:
    mvn package
    

    后会在本地的target目录下产生一个war包。

    1. 将war包放进tomcat的webapp下,启动tomcat后自动解压,并产生一个cas目录。
    2. 在浏览器中输入tomcat的访问地址,并访问上下文: /cas/,会自动跳转到CAS的 登录页面。
    CAS默认登录页面
    3. 配置登录用户名和密码

    最基本的配置时,登录的用户名和密码是在webapps\cas\WEB-INF\deployerConfigContext.xml文件中进行设置的。要修改这个设置,可以在源代码中进行,然后重新打包部署,也可以直接在解压后的部署目录下进行。

    修改内置登录的用户名和密码的位置:

    内置用户名密码的修改

    修熬过后直接重启tomcat即可。

    配置mysql数据库连接

    经过最小化配置后,要想进一步修改用户名密码等到数据库里,此时需要配置数据库的连接方式。主要有以下三步。

    第一步:准备好数据库,用户信息表和用户记录
    例如,我准备了一个数据库:mysql上的cas库,里面有一张表ms_user,有两个字段user_code和password分别代表用户名和密码。

    第二步:修改deployerConfigContext.xml文件

    1. 设置数据源bean。注释掉原来的内置用户方式的bean并添加数据源的bean。
    <!-- 注释内置的认证用户,改为使用数据库的配置 -->
        <!-- <bean id="primaryAuthenticationHandler"
              class="org.jasig.cas.authentication.AcceptUsersAuthenticationHandler">
            <property name="users">
                <map>
                    <entry key="admin" value="123456"/>
                </map>
            </property>
        </bean> -->
        <bean id="dataSource"
         class="com.mchange.v2.c3p0.ComboPooledDataSource"
         p:driverClass="com.mysql.jdbc.Driver"
         p:jdbcUrl="jdbc:mysql://127.0.0.1:3306/cas"
         p:user="root"
         p:password="123456" />
    
    1. 需要注意的是,你可以选择数据库的密码加密方式的设置,如果加了加密bean。
    <bean id="passwordEncoder" class="org.jasig.cas.authentication.handler.DefaultPasswordEncoder"
          c:encodingAlgorithm="MD5"
          p:characterEncoding="UTF-8" /> 
    
    1. 为数据库处理的bean配置数据源认证处理bean
      <!-- 加密的时候使用这个配置 -->
         <!-- <bean id="dbAuthHandler"
          class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler"
          p:dataSource-ref="dataSource"
          p:sql="select password from ms_user where user_code=?"
         p:passwordEncoder-ref="passwordEncoder"/> -->
         
         <!-- 不加密的时候使用这个配置 -->
         <bean id="dbAuthHandler"
          class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler"
          p:dataSource-ref="dataSource"
          p:sql="select password from ms_user where user_code=?" />
    

    根据是否加密,选择不同的认证处理bean。

    1. 修改认证管理Bean:authenticationManager的entry,将其改为数据库认证处理bean的名字。如图:
    修改认证管理bean的entry

    第三步: 将解析和支撑该认证方式的lib包加入到cas项目的WEB-INF/lib目录下

    涉及的包有下面几个:

    依赖包

    其中最上面的包需要自己从源码的对应项目去生成。

    第四步: 重启与验证
    此时可以直接在登录页面输入数据库中配置的用户名和密码,即可进行验证。

    使用https连接CAS

    要使用https连接才能够最终实现SSO的功能。因此,必须进行SSL的配置。配置分为以下几个步骤:

    S1:使用keytool创建keystore并导出证书

    keytool是JDK提供的整数生成工具,用于生成和管理自己签发的证书。

    1. 创建一个keystore,用于后面管理证书。
      本地先要有一个默认的目录,专门用于存放证书和keystore等。跳转到这个目录下,执行下面的命令生成一个keystore文件。
    keytool -genkey -alias sso -keypass 123456 -keyalg RSA -keysize 1024 -validity 3650 -keystore C:\Users\yubo_\keystore\cas.keystore -storepass 123456
    
    • -alias:生成的keystore别名;
    • -keypass:keystore的密码;
    • -keyalg :加密方式
    • -keysize :keystore文件的大小
    • -validity :keystore文件的有效期是多少天;
    • -keystore :本地存放目录,需要直接指定keystore文件的名字
    • -storepass :仓库的密码,一般设置和keypass一样
    1. 将keystore文件生成一个临时的整数过度文件,以从这个文件导出为证书
    keytool -genkey -alias ssoclient -keypass 123456 -keyalg RSA -keysize 1024 -validity 3650 -storetype PKCS12 -keystore client.p12 -storepass 123456
    
    1. 将中间keystore导出为证书
    keytool -export -alias client -keystore client.p12 -storetype PKCS12 -keypass 123456 -file client.cer
    
    S2:配置tomcat,设置SSL连接允许
    1. 注释掉原来的Connector连接方式,修改为下面的这个:
      <!-- <Connector port="18443" protocol="HTTP/1.1"
                   connectionTimeout="20000"
                   redirectPort="18443" /> -->
        <!-- A "Connector" using the shared thread pool-->
        
        <Connector port="28443" protocol="org.apache.coyote.http11.Http11Protocol"
        maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
        keystoreFile="C:\Users\yubo_\keystore\cas.keystore" keystorePass="123456"
        clientAuth="false" sslProtocol="TLS" />
    

    说明:
    (1)此处的protocol发生了改变,使用org.apache.coyote.http11.Http11Protocol进行连接。
    (2)启用SSLEnabled 。
    (3)指明keystore文件和访问的密码。

    S3: 使用https访问测试

    修改后的地址,需要使用https方式和对应端口进行修改,如我的地址成了https://localhost:28443/cas/login

    此时页面打开后,就不会再出现之前页面上提示的不安全连接方式,不能实现SSO这样的警示信息了。

    安全连接效果

    ---End

    相关文章

      网友评论

        本文标题:搭建CAS开发环境

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