`
cobo85
  • 浏览: 114869 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

基于CAS的SSO实现

    博客分类:
  • J2EE
阅读更多

       其实网上这样的资料google一下一大把,本来是不想再做重复无谓的东西,但是实在是忍不住的发几句牢骚,写东西是给别人分享经验的,需要好好的去伪存真。软件在不断的升级,用法也会不断的改进,不要一直用老版本的方法在新版本上面使用,不但对别人帮助不大,反而会耽误时间,还不如直接去官网翻英文文档,即便是痛苦些,也比拿到过时的东西好呀,看看网上的实现大部分都是那个2.x和3.x的cas混用,但是这样自己不觉得不合理么,现在JASIG上面根本没有yelu的包,在配置客户端的时候还要配置yelu什么的,不说废话了,把新版本的用法贴出来,希望其他童靴不要再和俺一样走弯路。

 

     搭建环境:

         服务器端:cas-server-webapp-3.4.2.war 

         客户端:cas-client-3.1.10(做简单的演示只需要modules下的cas-client-core-3.1.10.jar和commons-                    logging-1.1.jar就行了,不需要2.x下面的东西)

        JDK:jdk1.6.0_10

        tomcat:apache-tomcat-6.0.26

 

  

    首先、如果启用https那么就先用keytool生成下证书,导入到tomcat所用的JDK证书中,这些资料很多就不做详细说明了,只把可能遇到的问题写下

   1、keytool 不支持有空格的文件路径,特别是在导入证书的时候要注意

   2、导入证书的时候密码是默认的changit而不是自己证书的密码

   3、tomcat5.x和tomcat6.x启用SSL的方式不一样

       6.x的方式(单项认证)

   

<Connector protocol="org.apache.coyote.http11.Http11Protocol"     
                     port="8443" maxHttpHeaderSize="8192"   
           maxThreads="150" minSpareThreads="25" maxSpareThreads="75"   
           enableLookups="false" disableUploadTimeout="true"   
           acceptCount="100" scheme="https" secure="true"   
           clientAuth="false" sslProtocol="TLS" SSLEnabled="true"                    
           keystoreFile="${keystore_path/${name}.keystore}"     
           keystorePass="*****"/>

 

其次、搭建CAS服务器,这个没什么特别的东西,把war放到webapp中就行了

 

最后、客户端的搭建,

       1、把cas-client-core-3.1.10.jar和commons-logging-1.1.jar放到应用系统的lib中。

      2、在web.xml增加以下配置:

       

<context-param>  
            <param-name>serverName</param-name>  
            <param-value>${应用系统地址}:${端口}</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   
        </filter-class>  
        <init-param>  
            <param-name>casServerLoginUrl</param-name>  
            <param-value>https://caoshuaibiao:8443/cas342/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>https://caoshuaibiao:8443/cas342</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> 

 3、应用中得到通过CAS认证用户的方法

 

   

<%@ page import="org.jasig.cas.client.authentication.AttributePrincipal"%>
<%
AttributePrincipal principal = (AttributePrincipal)request.getUserPrincipal();   
	String username = principal.getName();   
%>

            

 

 

 

 

     

分享到:
评论
2 楼 blaiu 2011-04-13  
很不错,希望有更好的原创。
1 楼 yinbinhome 2011-03-13  
你很负责任啊!顶你!还是原创的好啊!
转载是挺害人的啊!哈哈
我给你发私信了,加我聊聊!

相关推荐

    SSO单点登录:源码 基于CAS实现

    有详细注释,实现都在此类中

    基于redis的sso接口文档和教程

    基于redis实现的单点登录这套方案比SSO CAS来说比较简单,容易上手,主要是依赖每个应用的拦截器和redis实现单点登录。

    cas-client 基于redis自定义实现

    cas-client 基于redis自定义实现、为实现自定义功能修改。可能会有bug,具体为何修改。可基于我的4.1自定义文档。

    Laravel开发-cas-server

    Laravel开发-cas-server 作为Laravel包实现的CAS服务器单点登录(SSO)。

    ssm redis实现sso单点登录

    公司需要做统一的sso单点登录,由于CAS过于重量级和复杂。所以就自己基于springMVC mybatis redis缓存实现了SSO单点登录。mark一下!

    springboot shiro pac4j cas jwt认证中心sso完整项目

    基于springboot框架,前后端分离模式下的shiro + pac4j +cas实现统一登录功能,子应用采用shiro鉴权,通过pac4j与cas交互,最终向前端返回jwt token

    cas 单点登录

    cas 单点登录,论文,基于CAS构建SSO系统的设计与实现

    java-cas-client-3.2.0

    CAS Server 是一套基于 Java 实现的服务,该服务以一个 Java Web Application 单独部署在与 servlet2.3 兼容的 Web 服务器上,另外,由于 Client 与 CAS Server 之间的交互采用 Https 协议,因此部署 CAS Server 的...

    常用SSO_单点登录_实现技术介绍

    1、 SAML(是否已认证,Subject和资源授权) 2、 Kerberos(OS级SSO) 3、 OpenID(基于URL的SSO) 4、 CAS(基于session的SSO) 5、 基于Cookie 6、 Oauth(应用间的SSO) 7、 NTLM(基于AD的SSO)

    基于JA-SIG CAS统一认证平台(sso)白cj设计与实现 (2013年)

    基于JA-SIG CAS框架,设计、实现了一个单点登录统一认证平台,为大型网站提供安全统一的用户身份认证服务。统一认证平台分为SSO CAS服务器端和CAS客户端,服务器端采用SSL加密协议的https方式部署,客户端采用http...

    CAS Server 4.1二次开发说明文档.docx

    基于cas 4.1改造实现单点登陆。自定义了服务注册中心、登陆控制(基于dubbo)、令牌服务类、退出通知类及个别微改。

    基于Django集成CAS实现流程详解

    CAS 全称集中式认证服务(Central Authentication Service),是实现单点登录(SSO)的一种手段。 对于本文用户可感知的层面,认证过程如下: 前端访问后端登录接口 后端返回重定向到 CAS 服务器的登录页面,并携带...

    springboot+shiro+cas+redis+mybatis+thymeleaf 集成开发框架

    由于项目需要从网上搜集的相关的集成框架,很多都是部分集成,一直没有找到整个流程全部集成好的,所以将集成好的框架分享出来供...主要实现SSO、后台RBAC角色认证管理。 下载后需要自行修改配置,项目包内带sql脚本

    项目实战:SSO单点登录方案

    本套视频,详解讲解了两套SSO解决方案. 1、基于Cookie跨域特性,实现SSO方案 2、使用第三方框架CAS,实现SSO方案

    SSO单点登录快速入门及实战项目(2.80G)

    01.课程大纲.avi ...03.多系统的复杂性.avi 04.HttpURLConnection工具的使用.avi 05.单点登录&注销功能演示.avi 06.单点登录的流程分析.avi 07.单点登录Cookie和Session存储...21.CAS-基于SpringBoot的客户端集成CAS.avi

    django-sso:基于django的统一的认证系统

    基于django的单点登录系统实现机制当用户第一次访问应用系统1的时候,因为还没有登录,会被引导到认证系统中进行登录;根据用户提供的登录信息,认证系统进行身份校正,如果通过校正,应该返回给用户一个认证的分数...

    springboot单点登录的项目

    基于springboot几种实现单点登录的方式都有:1.用redis缓存实现2.基于jwt实现sso3.基于spring-security oauth实现单点登录4.基于shiro实现单点登录

    详解使用django-mama-cas快速搭建CAS服务的实现

    当公司有多条产品线,或者有多个不同的应用的时候,每次都做登录是个非常烦人的事情。(原谅我没有从SSO的角度看...无论是OSC还是Github里面,基于Jasig的实现还是非常多的,不过Jasig也太多配置项了。。看着头晕。大周

    JA-SIG(CAS)学习笔记2.doc

    什么是SSO(Single Sign On)单点登录: 所谓单点登录是指基于用户/会话认证的一个过程,用户只需一次性提供凭证(仅一次登录),就可以访问多个应用。 目前单点登录主要基于Web的多种应用程序,即通过浏览器实现...

    基于RBAC统一权限控制,实现用户生命周期管理,开源、安全、自主可控 业界领先的IAM-IDaas身份管理和认证产品

    MaxKey单点登录认证系统是业界领先的IAM-IDaas身份管理和认证产品,支持OAuth2.x、OpenID Connect、SAML2.0、JWT、CAS、SCIM等SSO标准协议,基于RBAC统一权限控制,实现用户生命周期管理,开源、安全、自主可控。

Global site tag (gtag.js) - Google Analytics