cas搭建sso单点登陆

多的话我就不说了,概念什么的自己百度,直接上操作步骤:

一:cas是基于https的所以我们需要的就是证书啦:

1.cmd窗口输入:

keytool -genkey -alias ssodemo -keyalg RSA -keysize 1024 -keypass caiwenhao -validity 365 -keystore e:\menco.keystore -storepass caiwenhao


说明:注意一下这里的您的名字与姓氏这里,将用于域名访问


2.cmd导出证书:(-alias xxx 名字与上面生成证书的名字一致ssodemo)

keytool -export -alias ssodemo -keystore e:\menco.keystore -file e:\ssodemo.
crt -storepass caiwenhao

3.cmd安装客户端证书:(进入jdk的D:\jdk\jdk-7\jre\lib\security目录)

keytool -import -alias ssodemo -keystore cacerts -file e:\ssodemo.crt


说明:秘钥你敲入changeit就行了,这是java中cacerts证书库的默认密码

二:cas服务以及客户端

1.修改host文件:添加域名

127.0.0.1      casserver.cwh.com
127.0.0.1      client.cwh.com
127.0.0.1      client.cwh.com
说明:这里的casserver.cwh.com对应的就是生成证书是你的名字与姓氏

2.应用3个tomcat,一个作为cas服务,另两个为客户端:

3.修改客户端端口,以免端口冲突:


说明:同样也把另一台client2端口前面加2做修改

4.cas服务启用https协议:(把下面的代码注释放开,添加keystoreFile="e:/menco.keystore" keystorePass="caiwenhao")

启动casserver检验ssl是否生效:

说明:我用的是chrom浏览器,会出现证书无效之类的,点击高级展开继续访问就可以了

5.下载cas-server-3.5.2获取cas-server-webapp-3.5.2.war放入D:\tomcat\apache-tomcat-8.0.26 - casserver\webapps改名:cas-server.war

启动casserver;访问cas  https://casserver.cwh.com:8443/cas-server:


登录cas默认用户密码随便,主要用户和密码一致就可以了:


注销地址为https://casserver.cwh.com:8443/cas-server/logout:


三:cas连接数据库

打开D:\tomcat\apache-tomcat-8.0.26 - casserver\webapps\cas-server\WEB-INF\deployerConfigContext.xml文件

1.注销掉以下配置:

	 <bean class="org.jasig.cas.authentication.handler.support.SimpleTestUsernamePasswordAuthenticationHandler" /> 
2.引入所需jar包到D:\tomcat\apache-tomcat-8.0.26 - casserver\webapps\cas-server\WEB-INF\lib:


3.deployerConfigContext.xml添加datesource:

<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
		<property name="driverClass" value="com.mysql.jdbc.Driver"/>
		<property name="jdbcUrl" value="jdbc:mysql://localhost:3306/sso"/>
		<property name="user" value="root"/>
		<property name="password" value=""/>
	</bean>
4.在authenticationHandlers  的list里面也就是我们注销掉配置的那段下面添加以下配置:

<bean class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler">
					     <property name="dataSource" ref="dataSource" />
					     <property name="sql" value="select password from sec_user where account = ?" />
					 </bean>
说明:数据库和建表我就不说了
ok这样我们访问cas的时候原来的用户密码相同将不起作用,登录用我们数据库里面的数据就可以啦

四:客户端启用sso单点登陆

1.我们先启动我们client的tomcat,先访问下客户端是否没问题先

直接访问tomcat自带的一个examples例子就好了:http://client.cwh.com:28080/examples/servlets/servlet/HelloWorldExample

这样的话出现helloworld,那就没问题了


2.打开客户端examples这个例子的web.xml:D:\tomcat\apache-tomcat-8.0.26 - client1\webapps\examples\WEB-INF\web.xml:

在尾部添加以下代码:

<!-- 用于单点退出,该过滤器用于实现单点登出功能,可选配置-->
    <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>/*</url-pattern>
    </filter-mapping>
    <filter>
        <filter-name>CAS Filter</filter-name>
        <filter-class>org.jasig.cas.client.authentication.AuthenticationFilter</filter-class>
        <init-param>
            <param-name>casServerLoginUrl</param-name>
            <param-value>https://casserver.cwh.com:8443/cas-server/login</param-value>
        </init-param>
        <init-param>
            <param-name>serverName</param-name>
            <param-value>http://client.cwh.com:28080</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>CAS Filter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    <!-- 该过滤器负责对Ticket的校验工作,必须启用它 -->
    <filter>
        <filter-name>CAS Validation Filter</filter-name>
        <filter-class>
            org.jasig.cas.client.validation.Cas10TicketValidationFilter</filter-class>
        <init-param>
            <param-name>casServerUrlPrefix</param-name>
            <param-value>https://casserver.cwh.com:8443/cas-server</param-value>
        </init-param>
        <init-param>
            <param-name>serverName</param-name>
            <param-value>http://client.cwh.com:28080</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>


说明:同样另一个客户端也跟着改,注意一下里面配置的端口

3.添加客户端所需jar包:


4.启动客户端client1和client2,

访问client1:http://client.cwh.com:18080/examples/servlets/servlet/HelloWorldExample

或访问client2:http://client.cwh.com:28080/examples/servlets/servlet/HelloWorldExample

页面将会被重定向到cas登录界面并且url会变成例如这个样子:

https://casserver.cwh.com:8443/cas-server/login?service=http%3A%2F%2Fclient.cwh.com%3A28080%2Fexamples%2Fservlets%2Fservlet%2FHelloWorldExample
然后我们输入登录后将访问到helloword;另一个客户端访问则不需要重新登录直接跳转到helloword



至此我们利用cas实现sso单点登陆就完成了!




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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值