单点登录 - CAS服务器搭建

    CAS每个版本的差异很大,除了其内部实现不同,配置方式也有很大的差异。在本系列中,由于CAS 4.2.X采用了gradle作为管理工具,然而项目中使用maven,所以这里采用的CAS版本号是4.1.X,注意,版本号很重要,不然配置都对不上!!!

一、开始搭建

搭建CAS服务器有两种方式,一种是在根目录中使用maven命令编译打包,然后在cas-server-webapp模块中获取war包,部署在tomcat中;另一种是本文采用的方式,直接拷贝cas-server-webapp模块到项目中,方便修改配置和测试。

1、(如果第二步不成功的话,请回来看这一步)在cas包的根目录下,使用命令

mvn clean install  -Dmaven.test.skip=true

目的是为了在本地maven仓库中有cas项目的parent pom文件

 

2、生成秘钥,该秘钥用于https协议

使用命令生成秘钥。秘钥存放在 D:\keystore\test.keystore。这里的密码使用123456。

keytool   -genkeypair   -keyalg    "RSA"    -keystore     "D:\keystore\test.keystore"

 

3、拷贝cas-server-webapp模块到项目中,它以一个新module的形式存在于项目,拷贝后的项目结构如下:

                              

添加后的模块继承的父工程仍然是cas-server,如果之前没有cas-server工程的pom文件在本地maven仓库,有可能编译cas-server-webapp时会报错。这时需要进行第一步解决问题。

<parent>
  <groupId>org.jasig.cas</groupId>
  <artifactId>cas-server</artifactId>
  <version>4.1.10</version>
</parent>

修改cas-server-webapp模块的pom文件,因为父工程需要用该参数。

  <properties>
    <cs.dir>${project.basedir}</cs.dir>
  </properties>

 

在pom.xml文件中的build节点中添加插件,让它跳过license检查

            <plugin>
                <groupId>com.mycila</groupId>
                <artifactId>license-maven-plugin</artifactId>
                <configuration>
                    <skip>true</skip>
                </configuration>
            </plugin>

 

修改log4j2的配置,如果不修改,控制台中没有日志信息。

        <Logger name="org.jasig.cas.web.flow" level="info" additivity="true">
<!--添加控制台输出-->
            <AppenderRef ref="console"/>
            <AppenderRef ref="file"/>
        </Logger>
        <Logger name="org.jasig.inspektr.audit.support.Slf4jLoggingAuditTrailManager" level="info">
<!--添加控制台输出-->
            <AppenderRef ref="console"/>
            <AppenderRef ref="file"/>
        </Logger>

跳过checkstyle/findbugs插件,对于我来说,这两个插件特别烦

在pom文件的build节点添加,覆盖父工程的配置,跳过这两个检查

            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>findbugs-maven-plugin</artifactId>
                <version>${maven-findbugs-plugin.version}</version>
                <configuration>
                    <skip>true</skip>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-checkstyle-plugin</artifactId>
                <version>${maven-checkstyle-plugin.version}</version>
                <configuration>
                    <skip>true</skip>
                </configuration>
            </plugin>

 

4、配置jetty。

在cas-server-webapp模块的pom文件,修改jetty-maven-plugin插件的配置

          <plugin>
                <groupId>org.eclipse.jetty</groupId>
                <artifactId>jetty-maven-plugin</artifactId>
                <version>${maven-jetty-plugin.version}</version>
                <configuration>
                    <webApp>
                        <contextPath>/cas</contextPath>
                    </webApp>
                    <jettyXml>
                        ${cs.dir}/etc/jetty/jetty.xml,${cs.dir}/etc/jetty/jetty-ssl.xml,${cs.dir}/etc/jetty/jetty-https.xml
                    </jettyXml>
                    <systemProperties>
                        <systemProperty>
                            <name>org.eclipse.jetty.annotations.maxWait</name>
                            <value>240</value>
                        </systemProperty>
                    </systemProperties>
                    <!-- Works with remote debugging and mvn jetty:run-forked -->
                    <jvmArgs>-Xdebug -Xrunjdwp:transport=dt_socket,address=5000,server=y,suspend=n
                    </jvmArgs>

                    <!--<scanIntervalSeconds>10</scanIntervalSeconds>-->
                    <stopPort>9999</stopPort>
                    <reload>manual</reload>

                </configuration>
            </plugin>

这样jetty插件会在以下目录寻找jetty的配置文件jetty.xml、jetty-ssl.xml、jetty-https.xml

${cs.dir}/etc/jetty/jetty.xml,${cs.dir}/etc/jetty/jetty-ssl.xml,${cs.dir}/etc/jetty/jetty-https.xml

另外,配置了jetty的热启动,reload设定为人工干预自动启动,否则jetty会在scanIntervalSeconds指定的时间里扫描改动并且进行重启。当reload设定为manual后,在控制台回车jetty就会自动重启了。不过,测试了一下,配置的更改进行热启动是无效的。另外,热启动的时间稍长,注意看控制台输出。

                    <!--<scanIntervalSeconds>10</scanIntervalSeconds>-->
                    <stopPort>9999</stopPort>
                    <reload>manual</reload>

 

拷贝cas源码包中的etc文件夹到以下目录,注意要与src同级

jetty-ssl.xml文件中,配置秘钥存放路径和秘钥的密码。

  <New id="sslContextFactory" class="org.eclipse.jetty.util.ssl.SslContextFactory">
    <Set name="KeyStorePath"><Property name="jetty.ssl.keystore.path" default="F:/keystore/cas/test.keystore" /></Set>
    <Set name="KeyStorePassword"><Property name="jetty.keystore.password" default="123456" /></Set>
    <Set name="KeyManagerPassword"><Property name="jetty.keymanager.password" default="123456" /></Set>
  </New>

jetty-ssl.xml文件中,修改http的端口号

<Set name="port"><Property name="jetty.port" default="18080" /></Set>

jetty-ssl.xml文件中,修改https的端口号

<Set name="port"><Property name="jetty.ssl.port" deprecated="ssl.port" default="18443" /></Set>

 

二、启动服务

分别输入http://127.0.0.1:18080/cas/login  和  https://127.0.0.1:18443/cas/login  访问cas服务

 

yeah。。。。胜利。

它的默认用户名密码是 casuser/Mellon

可以在deployerConfigContext.xml文件中修改用户名和密码

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

 

转载于:https://my.oschina.net/thinwonton/blog/1377687

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值