zoukankan      html  css  js  c++  java
  • SSO单点登录学习总结(3)—— 基于CAS实现单点登录实例

    第一:

           本demo在一个机器上实现(三个虚拟主机),来看SSO单点登录实例(我们可以布到多个机器上使用都是同一个道理的),一个服务器主机,和两个客户端虚拟主机


    1. <span style="font-size:18px;"># 127.0.0.1 localhost  
    2. # ::1 localhost  
    3.   
    4. 127.0.0.1 localhost  
    5. 127.0.0.1 www.bbs.itcast.cn  
    6. 127.0.0.1 www.news.itcast.cn  
    7. 127.0.0.1 www.news.com  
    8. 127.0.0.1 www.bbs.com  
    9. 127.0.0.1 www.server.com  
    10. </span></span></span>  


    第二:在tomcat的根目录下,分别建立三个目录,即server、bbs、news。

                  在三个目录下,分别都建立一个ROOT(ROOT是tomcat的主默认主页目录)文件夹。

                  将cas-server.xx.war解压后散放到/tomcat/server/ROOT目录下。如下图:

    注意目录结构,是散放到ROOT的目录下。

    第三步:先测试服务器是否可以正常使用

     启动tomcat,在地址栏输入:

     http://www.server.com:8080(因为我没有修改端口默认值)


    用户名与密码相同就可以登录,默认



    请先保证在单个服务器上登录可以登录成功。如果不能登录成功,请重复前面的配置。

    第四步:配置两个客户端

           将下载的文件mywebapp.war分别解压到tomcat/bbs/ROOT目录下和tomcat/news/ROOT目录下。注意是散放到ROOT目录下。

    由于在mywebapp.war中并没有放置依赖的jar文件,所以,还需要我们添加它所依赖的jar文件,为此我为大家准备了已经放放置好的

    mywebapp.war文件。

    放置好的目录结构如下:


    WEB-INF/lib目录下的包如下:

    cas-client-core-3.2.1.jar

    commons-logging-1.1.jar

    这两个包,在cas-client.rar文件中都可以找到。

    此处,你可以启动一个tomcat,如果启动成功,则进入下一步。

    第五步:修改客户端的配置文件

           当使用登录客户端受保护的资源时,如果发现还没有登录,则会重定向到服务器(售票处)请求登录验证,登录成功后即会获取一张票据,服务器会携带这张票据再重定向到客户端页面。

    修改客户端的web.xml配置文件,让它在登录时,知道去哪台服务器:

    注意将里面的https全部修改成http。

    修改的部分主要分为两块:

    1:修改登录重定向过虑器,它用于保护受保护的资源,如果发面用户在访问受保护的资源时,用户还没有登录,则会重定向到服务器,要求用户登录:

    1. <span style="font-size:18px;"><filter>  
    2.     <!--配置登录过滤器,注意负责在登录时重定到服务器页面-->  
    3.         <filter-name>CAS Authentication Filter</filter-name>  
    4.         <filter-class>org.jasig.cas.client.authentication.AuthenticationFilter</filter-class>  
    5.         <init-param>  
    6.         <!--到服务器地址,注意后面的/login-->  
    7.             <param-name>casServerLoginUrl</param-name>  
    8.             <param-value>http://www.server.com:8080/login</param-value>  
    9.         </init-param>  
    10.         <init-param>  
    11.         <!--本程序所在的URL-->  
    12.             <param-name>serverName</param-name>  
    13.             <param-value>http://www.news.com:8080</param-value>  
    14.         </init-param>  
    15.         <init-param>  
    16.             <param-name>renew</param-name>  
    17.             <param-value>false</param-value>  
    18.         </init-param>  
    19.         <init-param>  
    20.             <param-name>gateway</param-name>  
    21.             <param-value>false</param-value>  
    22.         </init-param>  
    23.     </filter></span>  

    第六步:测试登录

           目前还不能实现单点登录。但可以对任意的一个客户端进行登录验证。

    1、 在地址栏输入

    http://www.news.com:8080

    点击访问受保护的页面:got to protected area

    将重定向到服务器请求登录:


    登录成功后即重定回原请求页面:



    第七步:配置可以单点登录

           Cas服务器都是用spring配置文件配置而成。且使用了cookie技术。在ticketGrantingTicketCookieGenerator.xml文件中,保存了cookie的生成方式及有效时间。


    注意,这是在server服务器上的spring配置文件。

    打开此文件,修改成以下内容:


    1. <span style="font-size:18px;"><bean id="ticketGrantingTicketCookieGenerator" class="org.jasig.cas.web.support.CookieRetrievingCookieGenerator"  
    2.         p:cookieSecure="false"  
    3.         p:cookieMaxAge="3600"  
    4.         p:cookieName="mycas"  
    5.         p:cookiePath="/" /></span>  

    说明:false是指支持http协议登录。默认为true,支持https登录。

            3600中cookie保存在本地的时间,默认为-1即浏览器缓存。

       cookiePath是cookie的path设置。

    第八步:单点登录测试

           修改了上面文件后,即可测试是否可以从一个点的登录,即可以访问两个网站时都显示先登录的姓名:

           先输入http://www.news.com:8080


    在地址栏直接输入:www.bbs.com:8080



    可以看到,显示的是news用户名,即之前在www.news.com上登录的用户名,即实现单点登录。


    好了,以上步骤,完成,如果可以配置成功,再进入下一步。


    总结

            以上都是在建立在SSO的war下实现的单点登录的效果,最简单的效果,最简单的入门操作,

    在CAS的主页上,可以看到CAS服务器,和客户端配置的完整过程,根据提示,完全可以配置成功服务器和客户端。同时,在CAS上也可以找到服务器端的程序和客户端的程序,都是已经配置好的,对于初步学习来说,完全可以直接取来配置测试。以上就是直接使用CAS官方提供的示例服务器和示例客户端配置一个单点登录的示例!

  • 相关阅读:
    使用路由传参时,query与params的区别!
    写前端页面步骤----vue+iview
    使用vue做表单验证
    vue中find函数
    @Controller和@RestController的区别?
    JavaScript 拥有动态类型
    Console的9种用法
    Navicat连接Oracle报ORA-12737错误
    oracle查询数据库连接数相关
    oracle存储过程把查询到的值更新到别的表
  • 原文地址:https://www.cnblogs.com/zhanghaiyang/p/7213272.html
Copyright © 2011-2022 走看看