cas

一:官网

http://jasig.github.io/cas/


Cas Server:http://developer.jasig.org/cas/
Cas Client:http://developer.jasig.org/cas-clients/


使用版本信息

Tomcat        : 7.0.57

Cas Server : cas-server-4.0.0-release.zip

cas Client   :  cas-client-3.3.3-release.zip


二:使用JDK自带的keytools生成证书

1:生成,打开CMD输入命令      

keytool -genkey -alias castest -keyalg RSA -keystore F:/keys/casetest

说明:生成一个别名为castest的证书

注意:特别注意口令(后续导入导出证书、CAS服务器端均要用到此口类)和“名字与姓氏”(为CAS跳转域名,否则会报错)

            F:/keys  keys文件夹里面是空的,执行命令后会在keys文件夹下面创建一个没有后缀名的文件casetest

如图:



2:输出

打开CMD输入命令    keytool -export -file F:/keys/castest.crt -alias castest -keystore F:/keys/castest


3:将证书导入到客户端JRE中

打开CMD输入命令    keytool -import -keystore "D:\Program Files\Java\jdk1.8.0_60\jre\lib\security\cacerts" -file F:/keys/castest.crt -alias castest

注意:是导入JRE中, 如果security中已经存在cacerts,需要先将其删除


4:修改C:\Windows\System32\drivers\etc\hosts,添加 sso.castest.com

127.0.0.1 sso.castest.com


三:配置服务器

1: 下载Cas Server(cas-server-4.0.0-release.zip),解压,在modules文件夹找到cas-server-webapp-4.0.0.war并拷贝到 %TOMCAT%/webapps文件夹下,并将其名字改为cas.war

2:修改%TOMCAT_HOME%\conf\server.xml文件一下内容用于SSL连接

<Connector 
    SSLEnabled="true" 
    clientAuth="false" 
    keystoreFile="F:/keys/castest"            <!—生成证书时的路径,证书名-->
    keystorePass="castest"                    <!—证书密码-->
    maxThreads="150" port="8443" protocol="org.apache.coyote.http11.Http11Protocol" scheme="https" secure="true" sslProtocol="TLS"/>

3: 启动tomcat,访问 https://localhost:8443/cas/login

1)访问https的cas



关于安装证书:

                        A. 浏览器安装证书: (ie)工具”-》“Internet选项”-》“内容”-》点击“证书”选项,-》 安装证书放入 “受信任的根证书颁发机构”-》导入

                        B. 在internet选项 “高级” 中去掉 “对证书地址不匹配发出警告” 勾选项


继续,成功访问如下图:



2) 输入账号和密码

账号:casuser

密码:Mellon



3) 退出登录     https://localhost:8443/cas/logout


四:CAS的HTTPS更改为HTTP

1. 将刚才的cas-server-webapp-4.0.0.war(刚才更改为cas.war)拷贝出来修改为 cas.rar,使用解压软件解压

2. 修改cas\WEB-INF\deployerConfigContext.xml, 在<bean id="proxyAuthenticationHandler" 增加属性  p:requireSecure="false"


3.  修改cas\WEB-INF\spring-configuration\ticketGrantingTicketCookieGenerator.xml,如图


3. 修改cas\WEB-INF\spring-configuration\warnCookieGenerator.xml文件,如图



4. 再次将cas文件夹打包为war包,部署,启动,浏览  http://localhost:8080/cas/login    

    输入   账号:casuser    密码:Mellon    登录成功即配置成功

    说明:

             重新打包war,打开cmd,切换到cas文件夹,输入命令    jar -cvf cas.war *


五:配置客户端

1. 下载Cas Client(cas-client-3.3.3-release.zip),解压,在modules文件夹找到cas-client-core-3.3.3.jar, commons-collections-3.1.jar 复制到项目WEB-INF/lib下

2. 新建客户端项目MyCasProject,在web.xml配置过滤器

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
	<display-name><span style="font-family: Arial, Helvetica, sans-serif;">CasClient</span></display-name>

	<!-- ======================== 单点登录开始 ======================== -->
	<!-- 用于单点退出,该过滤器用于实现单点登出功能,可选配置 -->
	<listener>
		<listener-class>org.jasig.cas.client.session.SingleSignOutHttpSessionListener</listener-class>
	</listener>

	<!-- 该过滤器用于实现单点登出功能,可选配置。 -->
	<filter>
		<filter-name>CAS Single Sign Out Filter</filter-name>
		<filter-class>org.jasig.cas.client.session.SingleSignOutFilter</filter-class>
	</filter>
	<filter-mapping>
		<filter-name>CAS Single Sign Out Filter</filter-name>
		<url-pattern>/CasClient/*</url-pattern>
	</filter-mapping>

	<!-- 该过滤器负责用户的认证工作,必须启用它 -->
	<filter>
		<filter-name>CASFilter</filter-name>
		<filter-class>org.jasig.cas.client.authentication.AuthenticationFilter</filter-class>
		<init-param>
			<param-name>casServerLoginUrl</param-name>
			<param-value>https://sso.castest.com:8443/cas/login</param-value>
			<!--这里的server是服务端的IP -->
		</init-param>
		<init-param>
			<param-name>serverName</param-name>
			<param-value>http://localhost:8080</param-value>
		</init-param>
	</filter>
	<filter-mapping>
		<filter-name>CASFilter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

	<!-- 该过滤器负责对Ticket的校验工作,必须启用它 -->
	<filter>
		<filter-name>CAS Validation Filter</filter-name>
		<filter-class>org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter</filter-class>
		<init-param>
			<param-name>casServerUrlPrefix</param-name>
			<param-value>https://sso.castest.com:8443/cas/</param-value><!-- 此处必须为登录url/cas/,带有任何其它路径都会报错,如“https://sso.castest.com:8443/cas/login”,这样也会报错。 -->
		</init-param>
		<init-param>
			<param-name>serverName</param-name>
			<param-value>http://localhost:8080</param-value>
		</init-param>
	</filter>
	<filter-mapping>
		<filter-name>CAS Validation Filter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

	<!-- 该过滤器负责实现HttpServletRequest请求的包裹, 比如允许开发者通过HttpServletRequest的getRemoteUser()方法获得SSO登录用户的登录名,可选配置。 -->
	<filter>
		<filter-name>CAS HttpServletRequest Wrapper Filter</filter-name>
		<filter-class>org.jasig.cas.client.util.HttpServletRequestWrapperFilter</filter-class>
	</filter>
	<filter-mapping>
		<filter-name>CAS HttpServletRequest Wrapper Filter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

	<!-- 该过滤器使得开发者可以通过org.jasig.cas.client.util.AssertionHolder来获取用户的登录名。 比如AssertionHolder.getAssertion().getPrincipal().getName()。 -->
	<filter>
		<filter-name>CAS Assertion Thread Local Filter</filter-name>
		<filter-class>org.jasig.cas.client.util.AssertionThreadLocalFilter</filter-class>
	</filter>
	<filter-mapping>
		<filter-name>CAS Assertion Thread Local Filter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

	<!-- ======================== 单点登录结束 ======================== -->  
        <!-- session超时定义,单位为分钟 -->
     <session-config>
         <session-timeout>2</session-timeout>
     </session-config> 
 
</web-app>

3. 发布,访问http://localhost:8080/CasClient/Index.jsp,自动跳转到sso.castest.com下去登录


输入账号和密码casuser:Mellon,跳转回index.jsp



说明:

此时客户端已安装成功。
可以用类似的方式新建多个站点,站点1登录以后站点而无需登录也可访问,如果未登录则会跳转到相应的url进行登录验证


六:更换为mysql数据库认证的方式

1:新建数据库cas,新建表 users

create table Users
(
   id                   bigint not null auto_increment comment 'ID号',
   username             varchar(80) default '' comment '用户名',
   nickname             varchar(80) default '' comment '用户昵称',
   password             varchar(50) default '' comment '密码',
   createAt             datetime comment '创建时间',
   updateAt             datetime comment '更新时间',
   primary key (id)
);

alter table Users comment '用户表';

插入数据

insert into users(username, password) values('casuser','9414f9301cdb492b4dcd83f8c711d8bb');

2.  将刚才的cas-server-webapp-4.0.0.war(刚才更改为cas.war)拷贝出来修改为 cas.rar,使用解压软件解压

3. 修改cas\WEB-INF\deployerConfigContext.xml, 更换验证方式

1) 必须依赖的Jar包

     c3p0-0.9.1.2.jar                                                  //下载地址: http://mvnrepository.com/artifact/c3p0/c3p0/0.9.1.2
     mysql-connector-java-5.1.21.jar                     //下载地址: http://mvnrepository.com/artifact/mysql/mysql-connector-java   

                                                                                                  http://dev.mysql.com/downloads/connector/j/
     cas-server-support-jdbc-4.0.0.jar                   //该包在cas服务器端cas-server-4.0.0\modules中查找

     将上面的jar包放到cas\WEB-INF\lib文件夹中


2)修改cas\WEB-INF\deployerConfigContext.xml,更改primaryAuthenticationHandler 为 DB

    <!-- <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://127.0.0.1:3306/cas?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull"
        p:user="root"
        p:password="000000" />
    <bean 
        id="passwordEncoder"
        class="org.jasig.cas.authentication.handler.DefaultPasswordEncoder"
        c:encodingAlgorithm="MD5"
        p:characterEncoding="UTF-8" />
    <bean 
        id="dbAuthHandler"
        class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler"
        p:dataSource-ref="dataSource"
        p:sql="select password from users where username=?"
        p:passwordEncoder-ref="passwordEncoder"/>

3)修改cas\WEB-INF\deployerConfigContext.xml, 更换验证Handle

更换的节点内容: <entry key-ref="dbAuthHandler" value-ref="primaryPrincipalResolver" />

如图:



4)  再次将cas文件夹打包为war包,部署,启动,浏览  https://localhost:8443/cas/login   或   http://localhost:8080/cas/login   

    登录账号密码还是: 账号:casuser    密码:Mellon    登录成功即配置成功

    说明:

             重新打包war,打开cmd,切换到cas文件夹,输入命令    jar -cvf cas.war *




















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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值