构建Cas源码应用

前置文章:CAS学习教程

1 构建CAS应用

1.1 CAS下载目录说明

下载CAS源码解压后目录如下图所示:

  1. 整个源码结构以maven方式管理

  2. cas-server-core为cas核心源码,为一个jar格式maven项目,maven构建后会生成一个jar包。

  3. 其余cas-server-*为cas扩展源码,为一个jar格式maven项目,maven构建后会生成一个jar包,可以根据自己的需要选择是否添加。

  4. cas-server-webapp为一个cas只引入cas核心源码cas-server-core的web项目,为一个war格式的maven项目,maven构建后会生成war包。

  5. modules 即为与上述模块一一对应的构建生成的jar以及war文件,其中cas-server-webapp-3.5.2.war即为我们前面安装用到的war 包,该war包只包含了cas最核心的源码以前端代码。如果需要引入另外的support,则可以重新构建。

1.2 CAS源码构建

1.2.1 构建war包

      使用maven构建war包,上小节说道如果需要引入其他的support,则可以使用maven重新构建。如想引入jdbc验证,cmd进入到cas源码目录,输入以下命令:

mvn package -pl cas-server-webapp,cas-server-support-jdbc

      意思是只需要构建cas-server-webapp和cas-server-support-jdbc,如果需要其他的请根据文件夹名称设置或者构建全部模块,打包全部模块命令:mvn package 即可。打bao   过程中会从网络下载需要的jar包,请耐心等待;如果在~/.m2/settings.xml中定义了mirror代理,那么请把随便修改一个字符,否则下载jar包会失败!

      打包完成后就可以从cas-server-webapp/target/cas.war复制到你的tomcat/webapp中;或者直接复制cas-server-webapp/target/cas-server-webapp-3.5.2目录到tomcat/webapp目录下,其他步骤和上面一样,只是该war程序引入的jdbc支持。

1.2.2 构建maven项目

第一种:下载 cas server 源码后,执行:

mvn eclipse:eclipse

该命令是将当前maven项目转换成eclipse项目。

导入eclipse,这时会报错:Plugin execution not covered by lifecycle configuration:xxx plugin 

解决方法:

在 cas\pom.xml 里的 build -》 pluginManagement  -》 plugins 节点加入:

         <plugin>
            <groupId>org.eclipse.m2e</groupId>
            <artifactId>lifecycle-mapping</artifactId>
            <version>1.0.0</version>
            <configuration>
               <lifecycleMappingMetadata>
                  <pluginExecutions>
                    <pluginExecution>
                      <pluginExecutionFilter>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-checkstyle-plugin</artifactId>
                        <versionRange>2.10</versionRange>
                        <goals>
                          <goal>checkstyle</goal>
                        </goals>
                      </pluginExecutionFilter>
                      <action>
                        <ignore />
                      </action>
                    </pluginExecution>
                    <pluginExecution>
                      <pluginExecutionFilter>
                        <groupId>com.mycila.maven-license-plugin</groupId>
                        <artifactId>maven-license-plugin</artifactId>
                        <versionRange>1.9.0</versionRange>
                        <goals>
                          <goal>check</goal>
                        </goals>
                      </pluginExecutionFilter>
                      <action>
                        <ignore />
                      </action>
                    </pluginExecution>
                    <pluginExecution>
                      <pluginExecutionFilter>
                        <groupId>org.codehaus.mojo</groupId>
                        <artifactId>aspectj-maven-plugin</artifactId>
                        <versionRange>1.4</versionRange>
                        <goals>
                          <goal>compile</goal>
                        </goals>
                      </pluginExecutionFilter>
                      <action>
                        <ignore />
                      </action>
                    </pluginExecution>
                  </pluginExecutions>
                </lifecycleMappingMetadata>
            </configuration>
        </plugin>

第二种方法:

参考: http://jasig.github.io/cas/4.0.x/installation/Maven-Overlay-Installation.html

下载maven 模板: https://github.com/UniconLabs/simple-cas4-overlay-template/archive/master.zip

导入eclipse -》 import -》 maven -》 existing maven projects,在pom.xml加入依赖,支持访问数据库验证密码:

<dependencies>
        <dependency>
            <groupId>org.jasig.cas</groupId>
            <artifactId>cas-server-webapp</artifactId>
            <version>${cas.version}</version>
            <type>war</type>
            <scope>runtime</scope>
        </dependency>
        
        <dependency>
            <groupId>org.jasig.cas</groupId>
            <artifactId>cas-server-core</artifactId>
            <version>${cas.version}</version>
        </dependency>
        <dependency>
            <groupId>org.jasig.cas</groupId>
            <artifactId>cas-server-support-jdbc</artifactId>
            <version>${cas.version}</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.35</version>
        </dependency>
        <dependency>
            <groupId>c3p0</groupId>
            <artifactId>c3p0</artifactId>
            <version>${c3p0.version}</version>
        </dependency>
                <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>${spring.version}</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
          <groupId>javax.validation</groupId>
          <artifactId>validation-api</artifactId>
          <version>${javax.validation.version}</version>
          <scope>compile</scope>
        </dependency>

    </dependencies>

    <properties>
        <cas.version>4.0.1</cas.version>
        <maven.compiler.source>1.7</maven.compiler.source>
        <maven.compiler.target>1.7</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        
        <spring.version>3.2.6.RELEASE</spring.version>
        <javax.validation.version>1.0.0.GA</javax.validation.version>
        <c3p0.version>0.9.1.2</c3p0.version>
    </properties>

修改 deployerConfigContext.xml

<bean id="authenticationManager" class="org.jasig.cas.authentication.PolicyBasedAuthenticationManager">
        <constructor-arg>
            <map>
               
                <entry key-ref="proxyAuthenticationHandler" value-ref="proxyPrincipalResolver" />
                <!--<entry key-ref="primaryAuthenticationHandler" value-ref="primaryPrincipalResolver" /> -->
                <entry key-ref="dbAuthHandler" value-ref="primaryPrincipalResolver"/>
            </map>
        </constructor-arg>

        
        <property name="authenticationPolicy">
            <bean class="org.jasig.cas.authentication.AnyAuthenticationPolicy" />
        </property>
</bean>
<!-- 
    <bean id="primaryAuthenticationHandler"
          class="org.jasig.cas.authentication.AcceptUsersAuthenticationHandler">
        <property name="users">
            <map>
                <entry key="casuser" value="Mellon"/>
            </map>
        </property>
    </bean>
    -->
    <bean id="dataSource"
      class="com.mchange.v2.c3p0.ComboPooledDataSource"
     p:driverClass="com.mysql.jdbc.Driver" p:jdbcUrl="jdbc:mysql://localhost:3306/portal_230?useUnicode=true&characterEncoding=UTF8&noAccessToProcedureBodies=true&autoReconnect=true&zeroDateTimeBehavior=convertToNull"
      p:user="root"
      p:password="root" />

    <!-- 密码加密方式-->
    <bean id="passwordEncoder"
      class="com.my.cas.authentication.handler.SelfPasswordEncoder"
      c:encodingAlgorithm="SHA1"
      p:characterEncoding="UTF-8" />

    <bean id="dbAuthHandler"
      class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler"
      p:dataSource-ref="dataSource"
      p:sql="select password from test_user where username=? "
      p:passwordEncoder-ref="passwordEncoder"
      />

其中:com.my.cas.authentication.handler.SelfPasswordEncoder  为自定义的密码加密类,实现接口为:org.jasig.cas.authentication.handler.PasswordEncoder。

注:maven的安装及myeclipse下集成maven可以参考:MyEclipse下Maven的安装配置

1.2.3 构建常规WEB项目

根据个人爱好,个人平时开发习惯还是比较习惯于常规web的项目结构,所以此处说明下如何构建常规结构的cas源码。

  1. 在MyEclipse中新建一个Web Project,名字随意,如:casserver等。

  2. 将cas核心源码cas-server-core目录下的java文件全部拷贝到新建的程序casserver程序中。

  3. 将cas-server-webapp目录下的java文件全部拷贝到新建的程序cassercer程序中。

  4. 将modules下cas-server-webapp-3.5.2.war解压,将WEB-INF/lib下的jar包全部拷到新建程序casserver中lib下、将WEB-INF/classes下一堆xml、properties等配置文件拷贝到src下,其余的文件全部拷到WebRoot下。

  5. 此时cas基础程序源码就搭建完成,如果想引入其他支持,直接拷贝相应jar包到lib下并修改相应配置即可。

  6. 后续开发和常规web开发一样,cas源码使用架构是SpringMVC和spring-webflow技术,可以在该源码基础上对cas做二次开发,如:增加验证码、记录登录日志、设置集成权限、CA证书集成等。

下图为构建好的常规web项目结构图:

转载于:https://my.oschina.net/wangzhen9005/blog/667274

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值