`
binghejinjun
  • 浏览: 35688 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

CAS单点登录用户注册后自动登录

阅读更多

   一 通常可能会在做项目的时候遇到此种需求:CAS客户端应用完成用户注册功能后直接跳转至CAS服务器登录并显示自定义的客户端某个页面;而不是用户完成注册后再次登录CAS服务器登录页面进行登录.这就是完成用户注册后自动登录功能.此文中cas服务端版本为3.4.6,客户端为3.2.0. 

 


   二 实现流程:
      注册成功后(客户端完成) -> 调用CAS端处理模块 -> 验证用户名密码 -> 生成TGT -> 生成TG -> Add ST&TGT至相关Register类 -> Add TGT至Cookie -> 重定向至 cas/login URL -> 完成
    三 CAS登录处理主要模块(类):
      a. Credentials  用于存储用户登录认证信息接口。
                  其默认实现类:org.jasig.cas.authentication.principal.UsernamePasswordCredentials
       b. CentralAuthenticationService 用于生成 ST(Service Ticket) 和  TGT(TicketGrantingTicket)的认证服务类。
                  其默认实现类: org.jasig.cas.CentralAuthenticationServiceImpl
       c. CookieRetrievingCookieGenerator 用于将TGT添加至Cookie及对Cookie进行管理。

 

 
     四 具体步骤
     1. 新建工程,新建登录后自动登录处理类RegisterAfterLoginController

 

      java代码 说明一(获取用户名密码,验证有效性,生成相关票据并绑定注册,添加cookie)
          protected ModelAndView handleRequestInternal(HttpServletRequest request,
            HttpServletResponse response) throws Exception
    {
        ModelAndView signinView=new ModelAndView();
        String username=request.getParameter("username");
        String password=request.getParameter("password");
        //此处应根据用户名密码去数据库校验,证实传递的注册用户信息的有效性,代码略
        bindTicketGrantingTicket(username, password, request, response);
        String viewName=getSignInView(request);
        signinView.setViewName(getSignInView(request));
        return signinView;
    }

 

 

 

 

     java代码 说明二(具体生成相关票据并绑定注册,添加cookie实现方法)
         protected void bindTicketGrantingTicket(String loginName, String loginPassword, HttpServletRequest request, HttpServletResponse response){
        try {
            UsernamePasswordCredentials credentials = new UsernamePasswordCredentials();
            credentials.setUsername(loginName);
            credentials.setPassword(loginPassword);
            String ticketGrantingTicket = centralAuthenticationService.createTicketGrantingTicket(credentials);
            ticketGrantingTicketCookieGenerator.addCookie(request, response, ticketGrantingTicket);
        } catch (TicketException te) {
            logger.error("Validate the login name " + loginName + " failure, can't bind the TGT!", te);
        } catch (Exception e){
            logger.error("bindTicketGrantingTicket has exception.", e);
        }
    }

 

 

     java代码 说明三(获取service参数并跳转页面)

        protected String getSignInView(HttpServletRequest request) {
        String service = ServletRequestUtils.getStringParameter(request, "service", "");
        return ("redirect:login" + (service.length() > 0 ? "?service=" + service : ""));
    }

 

 

 

     2.在工程中导入CAS相关类,声明centralAuthenticationService和ticketGrantingTicketCookieGenerator及setter,确认无错后,导出jar包至CAS/lib中.

 

 

 

     3.打开CAS的cas-servlet.xml文件,在<bean id="handlerMappingC"
  class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">mapping属性中添加:

    <prop
          key="/registerLogin">
          registerLoginController
    </prop>

 

    并在后面添加此类注册:

     <bean id="registerLoginController" class="com.sgcc.spicss.cas.web.RegisterAfterLoginController"
  p:centralAuthenticationService-ref="centralAuthenticationService"
  p:ticketGrantingTicketCookieGenerator-ref="ticketGrantingTicketCookieGenerator"/>

 

     最后一步,打开web.xml,添加:

       <servlet-mapping>
          <servlet-name>cas</servlet-name>
          <url-pattern>/registerLogin</url-pattern>
       </servlet-mapping>

 

 

备注:

1.关于centralAuthenticationService及ticketGrantingTicketCookieGenerator已声明在 spring-configuration/applicationContext.xml 和 ticketGrantingTicketCookieGenerator.xml中
     至此,此功能搭建过程已全部完成,在CAS客户端完成注册功能后,直接调用CAS对外接口cas/registerLogin?username=admin&password=admin(密码可经过特殊加密后传递,但要可解密)&service=http://localhost:8080/test(这里是示例,采用了get方式传递,实际应用中可采用post方式传递).

 

 

2.感谢denger原文作者的贡献,本文参考http://denger.iteye.com/blog/805743

 

 

3.令上传写好的jar包一份供参考下载,直接放到lib下,修改cas-servlet.xml,web.xml即可运行,各位可以反编译查看源码

 

分享到:
评论
3 楼 zqb666kkk 2016-07-05  
import org.jasig.cas.authentication.principal.UsernamePasswordCredentials;
这个类 cas 4.0.1里 已经找不到了 不知道用什么代替?
2 楼 fads 2014-12-17  
楼主,求联系方式,这个做了之后没有成功添加票据,又自动跳转到登陆页去了
1 楼 daringyun 2013-08-15  
http://www.codeweblog.com/implementation-of-cas-automatically-log-registered-users/

相关推荐

    CAS单点登录配置

    在提供的PDF文件`cas单点登录(一).pdf`和`cas单点登录(二).pdf`中,应该详细涵盖了这些步骤,以及更深入的技术细节,包括可能出现的问题和解决方案。通过学习这些文档,你应该能够成功地配置和实施CAS单点登录...

    禅道开源版集成CAS单点登录

    本文在已有的禅道集成CAS单点登录的客户端插件基础上进行的修改,因原有插件在我们的系统上调试无法成功,做了一些定制,环境如下: 1. CAS server 版本:4.0.0 2. 禅道开源版本: 9.6.3 3. 禅道CAS client 插件版本...

    CAS单点登录实例

    本文将深入探讨CAS单点登录实例及其相关知识点。 首先,单点登录(Single Sign-On,SSO)是一种身份验证机制,使得用户在一个应用系统中登录后,无需再次输入认证信息即可访问其他关联的应用系统。CAS作为开源的SSO...

    基于java语言开发的cas单点登录系统

    **基于Java语言开发的CAS单点登录系统** CAS(Central Authentication Service)是一种广泛使用的开源单点登录(Single Sign-On,SSO)框架,主要由耶鲁大学开发并维护。它旨在提供一种简单、安全的方式,使得用户...

    SSO之CAS单点登录

    综上所述,SSO之CAS单点登录提供了一种高效、安全的身份验证解决方案,简化了用户访问多应用的流程,同时也便于管理员管理和监控用户行为。对于大型组织,采用CAS进行SSO集成可以显著提升用户体验并加强信息安全。在...

    cas单点登录server端代码

    CAS(Central Authentication Service)是基于Java的开源身份验证框架,主要功能是实现单点登录(Single Sign-On,简称SSO)。SSO允许用户通过一次登录,就能访问多个应用系统,无需再次输入凭证,大大提升了用户...

    cas单点登录 server端,运行成功

    总之,CAS 4.0的单点登录服务器配置成功后,可以极大地提升用户体验,简化身份验证流程,并为权限控制提供了强大的基础。通过不断的测试和优化,你可以确保这个系统在实际环境中稳定可靠地运行。

    cas客户端集成单点登录代码3

    CAS(Central Authentication Service)是基于Java的一个开源身份验证框架,常用于实现单点登录(Single Sign-On, SSO)。在本文中,我们将深入探讨如何进行CAS客户端集成,以实现单点登录的登录登出功能。 单点...

    Jeecg配置单点登录 登录验证完整代码

    单点登录是一种网络应用架构中的安全机制,允许用户在一次登录后,就能访问多个相互关联的应用系统,而无需再次输入凭证。 单点登录通常采用中央认证服务(Central Authentication Service,简称CAS)协议。CAS是一...

    CAS单点登录

    总的来说,CAS单点登录通过集中管理用户认证,简化了用户登录过程,提高了安全性,同时也方便了系统的管理和维护。在实际应用中,开发者应深入理解CAS的工作原理,并结合具体需求进行配置和定制,以达到最佳的效果。

    Spring Security 3 与 CAS单点登录配置-Server

    而 CAS(Central Authentication Service)则是一种开源的单点登录(Single Sign-On,SSO)服务器,它允许用户通过单一的身份验证登录到多个服务,无需为每个服务单独提供认证。 Spring Security 3 提供了丰富的...

    cas单点登录

    总之,CAS单点登录提供了一种强大而灵活的方式来管理用户认证,简化了用户访问多应用系统的流程,同时也提升了安全性。正确配置和使用CAS客户端,如`cas-client-core`,能够无缝地将你的应用整合进CAS体系中,实现...

    CAS_SSO单点登录实例详细步骤

    单点登录(Single Sign-On,简称SSO)是一种网络认证机制,允许用户在一个应用系统中登录后,无需再次输入凭证即可访问多个相互信任的应用系统。CAS(Central Authentication Service)是实现SSO的一种开源解决方案...

    CAS单点登录系统,集成dubbo服务.zip

    在"标题"中提到的"CAS单点登录系统,集成dubbo服务",意味着这个项目将CAS与Apache Dubbo服务进行了整合。Dubbo是一个高性能、轻量级的Java RPC框架,常用于构建分布式服务。集成CAS后,Dubbo服务可以在同一个认证...

    cas.rar_CAS_cas linux _单点登录

    它主要用于实现网络应用的单点登录(Single Sign-On,SSO),允许用户通过一个入口点登录,然后在多个相互信任的应用之间共享该登录状态,无需再次输入凭证。在Linux环境下配置CAS,能够为多应用系统提供安全、便捷...

    cas 和spring security 单点登录 配置

    单点登录(Single Sign-On,简称SSO)是一种在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统的技术。在企业级应用中,SSO能够提供更便捷的用户体验,同时也增强了安全性。本篇将详细介绍如何...

Global site tag (gtag.js) - Google Analytics