现在的位置: 首页 > 综合 > 正文

cas 单点登录 一

2014年02月12日 ⁄ 综合 ⁄ 共 3493字 ⁄ 字号 评论关闭

单点登录

一、概述

1.1单点登录的定义

单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。   

1.2什么地方使用单点登录

企业应用集成(EAI, Enterprise Application Integration)。企业应用集成可以在不同层面上进行:例如在数据存储层面上的数据大集中,在传输层面上的通用数据交换平台,在应用层面 上的业务流程整合,和用户界面上的通用企业门户等等。事实上,还有一个层面上的集成变得越来越重要,那就是身份认证的整合,也就是单点登 录

当有多个业务系统的时候,需要用户登录其中的一个系统就可以访问所有的系统,这个时候就需要做单点登录。例如:干教网。

1.3单点登录的产品

     单点登录的产品有:BEAWLESIBM Tivoli Access Manager,Sun 公司的identity Server,Oracle公司的OID,这些产品都是收费的。现在我们来介绍一款免费的单点登录的产品,而且应用非常广泛,这就是CAS

二、CAS介绍

2.1CAS由来

CAS(Central Authentication Service) 是 Yale 大学发起的构建 Web SSO 的 Java开源项目。现在应用非常广泛。

2.2CAS原理

当用户第一次访问应用系统1的时候,因为还没有登录,会被引导到认证系统中进行登录;根据用户提供的登录信息,认证系统进行身份效验,如果通过效验,应该 返回给用户一个认证的凭据--ticket;用户再访问别的应用的时候,就会将这个ticket带上,作为自己认证的凭据,应用系统接受到请求之后会把 ticket送到认证系统进行效验,检查ticket的合法性。如果通过效验,用户就可以在不用再次登录的情况下访问应用系统2和应用系统3了。

由此可见,cas是基于cookie缓存的。当把这个回话关闭之后,那还得重新登录。

三、CAS使用教程

3.1HTTPS协议的CAS使用教程

第一步:准备环境:

Tomcat7.2

JDK6

CAS Service 版本    cas-server-3.4.8-release

CAS Client版本      cas-client-3.2.1-release    

第二步:生成证书

证书对于实现此单点登录非常之重要,证书是服务器端和客户端安全通信的凭证,本教程只是演示,所有用了JDK自带的证书生成工具keytool。当然在实际项目中你可以到专门的证书认证中心购买证书。

具体命令,下面这篇文章介绍的很仔细。

http://www.blogjava.net/xinwuhen/archive/2008/03/13/185958.html

第三步:配置服务器端

  1、 下载CAS的服务端,解压,把解压后的文件中modules文件夹中的cas-server-webapp-3.4.8.war文件拷贝的%TOMCAT_HOME%\webapps下,并修改文件名为:cas.war2、修改%TOMCAT_HOME%\conf\server.xml修改为:

<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"  

maxThreads="150" scheme="https" secure="true"  

clientAuth="false" sslProtocol="TLS"   

keystoreFile="D:/keys"  生成的密钥

keystorePass="smalllove" 密钥的密码/>      

第四步:配置客户端:

加入相应的jar包:

     

<context-param>  

            <param-name>serverName</param-name>  

<!--服务器的ip地址-->

            <param-value>127.0.0.1</param-value>  

        </context-param> 

        <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>  

        <listener>  

            <listener-class>  

              org.jasig.cas.client.session.SingleSignOutHttpSessionListener   

            </listener-class>  

        </listener>  

        <filter>  

            <filter-name>CAS Authentication Filter</filter-name>  

            <filter-class>  

            <!-- 加上自己的逻辑 

org.jasig.cas.client.authentication.AuthenticationFilter  

                -->

             com.canshishi.sso.filter.CanshishiAuthenticationFilter 

            </filter-class>  

            <init-param>  

                <param-name>casServerLoginUrl</param-name>  

<!--单点登录的地址-->

               <param-value>http://127.0.0.1/cas/login</param-value>  

            </init-param>  

        </filter>  

        <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>http://127.0.0.1/cas</param-value>  

            </init-param>  

        </filter>

        <filter>  

            <filter-name>CAS HttpServletRequest Wrapper Filter</filter-name>  

            <filter-class>  

                org.jasig.cas.client.util.HttpServletRequestWrapperFilter   

            </filter-class>  

        </filter>  

        <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 Authentication Filter</filter-name>  

            <url-pattern>/*</url-pattern>  

        </filter-mapping>  

        <filter-mapping>  

            <filter-name>CAS Validation Filter</filter-name>  

            <url-pattern>/*</url-pattern>  

        </filter-mapping>  

        <filter-mapping>  

            <filter-name>CAS HttpServletRequest Wrapper Filter</filter-name>  

            <url-pattern>/*</url-pattern>  

        </filter-mapping>  

        <filter-mapping>  

            <filter-name>CAS Assertion Thread Local Filter</filter-name>  

            <url-pattern>/*</url-pattern>  

        </filter-mapping>  

抱歉!评论已关闭.