CAS实现单点登录(SSO)经典完整教程(转)

原址(http://blog.youkuaiyun.com/small_love/article/details/6664831)

 

 

cas下载地址http://downloads.jasig.org/cas/

cas-server-3.1-release.zip

http://downloads.jasig.org/cas-clients/

cas-client-3.1-release.zip

 

一、简介

                1、cas是有耶鲁大学研发的单点登录服务器

                 2、本教材所用环境

 

  • Tomcat7.2
  • JDK6
  • CAS Service 版本   cas-server-3.1-release.zip
  • CAS Client版本      cas-client-3.1-release.zip                          

 

    二、生成证书

                            证书对于实现此单点登录非常之重要,证书是服务器端和客户端安全通信的凭证,本教程只是演示,所有用了

                    JDK自带的证书生成工具keytool。当然在实际项目中你可以到专门的证书认证中心购买证书。

                            中文官方网站:http://www.verisign.com/cn/

                   1、用JDK自带的keytool生成证书

 

[plain]  view plain copy
  1. 命令:keytool -genkey -alias  smalllove -keyalg RSA -keystore D:/keys/smallkey  

                   此命令是生成一个证书,其中 smalllove 是证书别名

 

     此命令的执行如图所示:

                    

                      其中名字与姓氏这一最好写你的 域名,如果在单击测试你可以在C:\Windows\System32\drivers\etc\hosts文件中映射一个虚拟域名,

              注意不要写IP。

           2、导出证书

                

[plain]  view plain copy
  1. 命令:C:\>keytool -export -file d:/keys/small.crt -alias smalllove -keystore d:/keys/smallkey  

                如图:

 

                      

               密码为上步设置的密码。

           3、把证书导入到客户端JDK中。

                

[plain]  view plain copy
  1. 命令:keytool -import -keystore C:\Java\jdk1.6.0_21\lib\security\cacerts -file D:/keys/small.crt -alias smalllove  

           此命令是把证书导入到JDK中。

 

           如图:

            

          到此证书导入成功。

           注意:在此步有可能出现如下错误

     

[plain]  view plain copy
  1. C:\>keytool -import -keystore C:\Java\jdk1.6.0_21\lib\security\cacerts -file D:/keys/small.crt -alias smalllove  
  2.    输入keystore密码:  
  3.  keytool错误: java.io.IOException: Keystore was tampered with, or password was incorrect  

                     次错误的解决方法是,把%JAVA_HOME%\lib\security下的cacerts文件删除掉,在执行。

 

                 

    三、配置服务端

                      1、 下载CAS的服务端,解压,把解压后的文件中modules文件夹中的cas-server-webapp-3.4.8.war文件拷贝的%TOMCAT_HOME%\webapps

               下,并修改文件名为:cas.war。

                      2、修改%TOMCAT_HOME%\conf\server.xml文件

                               去掉此文件83到93行之间的注释,修改为:

 

[html]  view plain copy
  1. <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"  
  2.                maxThreads="150" scheme="https" secure="true"  
  3.                clientAuth="false" sslProtocol="TLS"   
  4.                keystoreFile="D:/keys/smallkey"  <!--在2.1中生成的证书的位置-->  
  5.                keystorePass="smalllove"/>       <!--在2.1中设置的密码-->  

                     3、以上配置完成访问http://yourhost:8443/cas出现一下页面

 

                                   

                          点击继续浏览会出现

                                         

                         输入用户名admin和密码admin登录则会出现

                                      

                         登录成功。

                         至此,说明服务端配置成功。

   四、配置客户端

                   1、添加客户端到你的项目中

                          ·手动下载下载cas-client,地址:http://www.ja-sig.org/downloads/cas-clients/,然后解压cas-client-3.1.12.zip,在modules文件夹中有需要的jar包,                         请根据自己的项目情况选择使用,把相应的jar包放到你项目WEB-INF/lib下。

                   ·使用maven

                              

[html]  view plain copy
  1. <!-- cas -->  
  2. <dependency>  
  3.     <groupId>org.jasig.cas.client</groupId>  
  4.     <artifactId>cas-client-core</artifactId>  
  5.     <version>3.1.12</version>  
  6. </dependency>  

                2、在客户端项目的web.xml配置过滤器

 

[html]  view plain copy
  1. <!-- ======================== 单点登录开始 ======================== -->  
  2.     <!-- 用于单点退出,该过滤器用于实现单点登出功能,可选配置 -->  
  3.     <listener>  
  4.         <listener-class>org.jasig.cas.client.session.SingleSignOutHttpSessionListener</listener-class>  
  5.     </listener>  
  6.   
  7.     <!-- 该过滤器用于实现单点登出功能,可选配置。 -->  
  8.     <filter>  
  9.         <filter-name>CAS Single Sign Out Filter</filter-name>  
  10.         <filter-class>org.jasig.cas.client.session.SingleSignOutFilter</filter-class>  
  11.     </filter>  
  12.     <filter-mapping>  
  13.         <filter-name>CAS Single Sign Out Filter</filter-name>  
  14.         <url-pattern>/*</url-pattern>  
  15.     </filter-mapping>  
  16.   
  17.     <!-- 该过滤器负责用户的认证工作,必须启用它 -->  
  18.     <filter>  
  19.         <filter-name>CASFilter</filter-name>  
  20.         <filter-class>org.jasig.cas.client.authentication.AuthenticationFilter</filter-class>  
  21.         <init-param>  
  22.             <param-name>casServerLoginUrl</param-name>  
  23.             <param-value>https://www.travel.com:8443/cas/login</param-value>  
  24.             <!--这里的server是服务端的IP -->  
  25.         </init-param>  
  26.         <init-param>  
  27.             <param-name>serverName</param-name>  
  28.             <param-value>http://www.travel.com:8080</param-value><span style="color:#FF0000;"> ①</span>  
  29.         </init-param>  
  30.     </filter>  
  31.     <filter-mapping>  
  32.         <filter-name>CASFilter</filter-name>  
  33.         <url-pattern>/*</url-pattern>  
  34.     </filter-mapping>  
  35.   
  36.     <!-- 该过滤器负责对Ticket的校验工作,必须启用它 -->  
  37.     <filter>  
  38.         <filter-name>CAS Validation Filter</filter-name>  
  39.         <filter-class>  
  40.             org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter</filter-class>  
  41.         <init-param>  
  42.             <param-name>casServerUrlPrefix</param-name>  
  43.             <param-value>https://www.travel.com:8443/cas</param-value>  
  44.         </init-param>  
  45.         <init-param>  
  46.             <param-name>serverName</param-name>  
  47.             <param-value>http://www.travel.com:8080</param-value>  <span style="color:#FF0000;">②</span>  
  48.         </init-param>  
  49.     </filter>  
  50.     <filter-mapping>  
  51.         <filter-name>CAS Validation Filter</filter-name>  
  52.         <url-pattern>/*</url-pattern>  
  53.     </filter-mapping>  
  54.   
  55.     <!-- 该过滤器负责实现HttpServletRequest请求的包裹, 比如允许开发者通过HttpServletRequest的getRemoteUser()方法获得SSO登录用户的登录名,可选配置。 -->  
  56.     <filter>  
  57.         <filter-name>CAS HttpServletRequest Wrapper Filter</filter-name>  
  58.         <filter-class>  
  59.             org.jasig.cas.client.util.HttpServletRequestWrapperFilter</filter-class>  
  60.     </filter>  
  61.     <filter-mapping>  
  62.         <filter-name>CAS HttpServletRequest Wrapper Filter</filter-name>  
  63.         <url-pattern>/*</url-pattern>  
  64.     </filter-mapping>  
  65.   
  66.     <!-- 该过滤器使得开发者可以通过org.jasig.cas.client.util.AssertionHolder来获取用户的登录名。 比如AssertionHolder.getAssertion().getPrincipal().getName()。 -->  
  67.     <filter>  
  68.         <filter-name>CAS Assertion Thread Local Filter</filter-name>  
  69.         <filter-class>org.jasig.cas.client.util.AssertionThreadLocalFilter</filter-class>  
  70.     </filter>  
  71.     <filter-mapping>  
  72.         <filter-name>CAS Assertion Thread Local Filter</filter-name>  
  73.         <url-pattern>/*</url-pattern>  
  74.     </filter-mapping>  
  75.   
  76.     <!-- ======================== 单点登录结束 ======================== -->  

             

 

 

   五、常见问题说明

                  错误一、

                           

         若出现以上错原因是:你在客户端的web.xml中①,②的配置有误。

             错误二、

 

[plain]  view plain copy
  1. javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException:   
  2. PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException:   
  3. unable to find valid certification path to requested target  

                  若出现次错误是有与你客户端的证书有问题。重新导入你证书。

CAS单点登录 单点登录CAS系统的实现 阅读详情

相关推荐

cas单点登录流程揭密

cas中的Cookie、Session运用流程

zwjzone的博客 2412

单点登录CAS实现

当用户尝试访问其他应用程序或系统时,这些应用程序或系统会向身份提供者发送身份验证请求,并使用之前获得的授权令牌进行授权。单点登录(Single Sign-On,简称SSO)是一种身份验证技术,它允许用户使用一组凭据(如用户名和密码)登录到多个应用程序或系统中,而无需在每个应用程序或系统中单独登录。当用户尝试访问其他应用程序或系统时,这些应用程序或系统会检查Cookie中的身份验证信息,并使用该信息进行身份验证和授权。使用单点登录技术,员工可以在这些应用程序之间无缝地切换,而无需在每个应用程序中单独登录。

weixin_46894136的博客 9402

基于redis单点登录,SSO 单点登录,SSO CAS

查看传统的的登录方式 大家可以看到最后的用户信息 是存储到 session 中的。 现在有一个致命的问题 服务器中的session不是共享的,如果我们的项目的量级很大需要分布式服务器,那么就需要用户高频率的操作登录功能。这对于用户体验来说是残忍的,也是致命的。 传统登录问题: session默认是存储在当前服务器的内存中,如果是集群,那么只有登录那台机器的内存中才有这个session 比如说我...

H_sen's Blog 3180

CAS实现SSO单点登录详解

一. 基本概念 1. SSO 单点登录 (Single Sign-On) 是目前比较流行的服务于企业多系统整合的解决方案之一,使得在多个系统中,用户只需要登录/退出一次就可以访问/退出所有相互信任的应用系统。 2. CAS 认证中心 (Central Authentication Service) 是SSO的一种实现,Yale大学开源了一个CAS项目(感兴趣的可以自行学习),本文实现了一个简化版的CAS(github源码地址) 二. 原理 ...

yiyefuchen的博客 1626

CAS SSO 单点登录 【完整版】

什么是单点登录?什么是SSO? SSO就是单点登录!!! SSO即Single Sign On。 可是为什么我们要单点登录呢?为什么不能把所有的系统做成一个war包里呢? 道理很简单啊,如果这个银行这个企业全是你一家公司里的一个项目组包下来了,然后是从头开始开发,你当然可以把所有的功能模块做到一个WAR工程中啊。 可是很多时

qq897958555的博客 4674

CAS协议介绍和在apache使用cas实现单点登录sso

前话        单点登录问题(sso)的一个通俗理解是指访问同一服务器中的不同应用中的受保护资源,用户只需要一次通过登录验证。SSO的应用场景很多,博主这里就不举例了。CAS是耶鲁大学开发的一个SSO系统,同时Spring Framework的安全框架Acegi也支持CAS,CAS被设计成一个单独的web应用。CAS的设计目标: 1、为多个web应用提供SSO设施,同时可以为非web应用但

kerryfish的专栏 5441

SSO之CAS单点登录部署

项目之前用到单点登录,之前都是网上找了一些资料然后就用上了,中间也遇到了一些问题,这里总结一下,毕竟以后还是可能再用到这东西的。 这里摘抄下有关基本概念帮助后面理解CAS的实现1.基本概念:cookie,session,会话cookie,jssessionid cookie和session机制是为了解决HTTP协议的无状态而生的; cookie是客户端保存用户信息的机制; session是服务器保

记录成长的点点滴滴 6367

【单点登录】什么是 SSO 与 CAS?

SSO 【转自】https://www.cnblogs.com/btgyoyo/p/10722010.html SSO 是英文 Single Sign On 的缩写,翻译过来就是单点登录。顾名思义,它把两个及以上个产品中的用户登录逻辑抽离出来,达到只输入一次用户名密码,就能同时登录多个产品的效果。 打个比方,SSO 和我们去迪士尼玩时购买的通票很像。 我们只要买一次通票,就可以玩所有游乐场内的设施,而不需要在过山车或者摩天轮那里重新买一次票。在这里,买票就相当于登录认证,游乐场就相当于使用一套

happydecai的博客 1852

【实战系列之CAS实现SSO单点登录】

首先,我们需要明确SSO(Single Sign-On,单点登录)的概念。SSO允许用户使用一组凭据(如用户名和密码)登录多个应用程序,而无需为每个应用程序单独认证。这样不仅提升了用户体验,还加强了安全性,因为用户无需记住多个密码。CAS(Central Authentication Service)是实现SSO的一种流行方式。它是一个基于Web的应用程序,作为身份验证服务器,管理用户对各种应用程序的访问。

qq_33545255的博客 1156

聊聊单点登录(SSO)中的CAS认证

随着企业的发展,一个大型系统里可能包含 n 多子系统, 用户在操作不同的系统时,需要多次登录,很麻烦,我们需要一种全新的登录方式来实现多系统应用群的登录,这就是单点登录。web 系统 由单系统发展成多系统组成的应用群,复杂性应该由系统内部承担,而不是用户。无论 web 系统内部多么复杂,对用户而言,都是一个统一的整体,也就是说,用户访问 web 系统的整个应用群与访问单个系统一样,登录/注销 只要1次就够了即单点登录,一种对于许多相互关联,但是又是各自独立的软件系统,提供访问控制的方法。

虚幻私塾 1365

Java架构-CAS SSO单点登录框架介绍

1.了解单点登录 SSO 主要特点是: SSO 应用之间使用 Web 协议(如 HTTPS) ,并且只有一个登录入口. SSO 的体系中有下面三种角色: User(多个) Web 应用(多个) SSO 认证中心(一个) 2.SSO 实现包含以下三个原则 所有的登录都在 SSO 认证中心进行。 SSO 认证中心通过一些方法来告诉 Web 应用当前访问用户究竟是不是通过认证的用...

Java架构师笔记 2774

CAS实现SSO单点登录案例(整合SpringSecurity)

CAS介绍 CAS是一个单点登录框架,由耶鲁大学的一个组织开发。CAS是一个开源项目,代码目前是在github上管理。单点登录:Single Sign On,简称SSO,SSO使得在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。通俗理解为一个应用登录了,其他被授权的应用不用再登录。之前也写过一篇sso单点登录,用redis实现的,有兴趣可以翻翻 cas下载地址:https:/...

shemuel的技术笔记 4727

用CAS实现SSO(单点登录)+数据库读取

用CAS实现SSO(单点登录)+数据库读取1.什么是SSO,什么是CAS. SSO即单点登录的意思,而CAS 是 Yale 大学发起的一个开源项目,旨在为 Web 应用系统提供一种可靠的单点登录方法。2.CAS认证原理。 从结构上看,CAS 包含两个部分: CAS Server 和 CAS Client。CAS Server 需要独立部署,主要负责对用户的认证工作;CAS Cli

ZQUSwansea的博客 1856

【cas基础】SSO基于cas实现单点登录

概念介绍 1.定义 CAS ( CentralAuthentication Service ) 是 Yale 大学发起的一个企业级的、开源的项目,旨在为 Web 应用系统提供一种可靠的单点登录解决方法(属于 WebSSO )。   2.结构体系   从结构体系看, CAS 包括两部分: CAS Server 和 CAS Client 。 CAS Server 负责完成对用户的认证

IT Girl 5356

Unipush2.0 App消息推送(在线+离线推送)

使用unipush2.0进行消息推送,包含在线跟离线

weixin_50251467的博客 3694

LS-Dyna模态分析实战:从模型构建到结果解读的全流程指南

本文提供了一份详尽的LS-Dyna模态分析实战指南。文章系统讲解了如何利用LS-Dyna内置的隐式求解器进行特征值求解,从模型构建、几何清理、材料与连接设置,到核心的边界条件与隐式求解控制(如*CONTROL_IMPLICIT_EIGENVALUE),最后完成计算并解读频率与振型结果。旨在帮助工程师在熟悉的环境中高效完成结构振动特性分析,为后续动态响应分析奠定基础。

info6的博客 262

Apereo CAS实现单点登录(sso)

文章目录一什么是单点登录(sso)二什么是CAS三CAS Server3.1下载与部署cas的war包3.2启动tomcat查看cas Server是否安装成功3.3CAS Server其它功能演示四CAS 客户端五CAS 认证流程 一什么是单点登录(sso) 用户一次登录可以访问所有互相信任的应用系统 传统的session无法在系统分别部署到不同的服务器中使用 二什么是CAS 是实现SSO单点登录的框架 点击进入CAS官网: 特点 开源企业级单点登录解决方案 CAS Service(CAS服务端): 是

呆大王的博客 3687

在F1C100s上跑GBA游戏:手把手教你用Buildroot配置SDL和移植gpsp模拟器

本文详细介绍了在全志F1C100s开发板上配置Buildroot、移植SDL库和gpsp模拟器的完整流程,帮助开发者实现在ARM9平台上流畅运行GBA游戏。内容涵盖环境配置、交叉编译、常见问题解决及性能优化技巧,特别针对'段错误'和'无声音'等典型问题提供实用解决方案。

weixin_42566424的博客 397
上一篇: 统一身份认证(CAS)客户端测试获取信息代码
下一篇: 将CAS3.1中 https认证的方式改为http(转)
_frank
博客等级 码龄17年 8粉丝 403原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值