1. 关于CAS的介绍不再累述,我想涉及过SSO同学应该都会对该框架所有了解,我们目前项目采用的CAS Server 版本为 3.4.2.1, 其 CAS Client 版本为 3.1.10。
CAS项目官方:http://www.jasig.org/cas
本文讲述CAS登录处理未包括 CAS Client 与 Server 端的对 ST 采用SMAL验证的流程。
2. 对于登录其主要处理流程:
注册成功后 -> 调用CAS登录处理的相关模块 -> 验证用户名密码 -> 生成TGT -> 生成TG -> Add ST&TGT至相关Register类 -> Add TGT至Cookie -> 重定向至 cas/login URL -> 完成
3. 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进行管理。
4. 具体实现代码:
/**
* user register process and automatic login.
* @param userForm the user information object.
* @param request the HttpServletRequest object
* @param response the HttpServletResponse object
* @return get result view
*/
protected ModelAndView handleUserRegisterInternal(UserInfoVo userForm, HttpServletRequest request, HttpServletResponse response) {
ModelAndView signinView = new ModelAndView(REGISTER_VIEW);;
final boolean isUnique = userService.checkUserUnique(userForm.getLoginName());
final boolean isRegistered = isUnique ? registerUser(userForm, request, response) : false;
if (isRegistered) {
bindTicketGrantingTicket(userForm.getLoginName(), userForm.getLoginPassword(), request, response);
signinView.setViewName(getSignInView(request));
}
return signinView;
}
/**
* Invoke generate validate Tickets and add the TGT to cookie.
* @param loginName the user login name.
* @param loginPassword the user login password.
* @param request the HttpServletRequest object.
* @param response the HttpServletResponse object.
*/
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);
}
}
/**
* Get the signIn view URL.
* @param request the HttpServletRequest object.
* @return redirect URL
*/
protected String getSignInView(HttpServletRequest request) {
String service = ServletRequestUtils.getStringParameter(request, "service", "");
return ("redirect:login" + (service.length() > 0 ? "?service=" + service : ""));
}
cas-servlet.xml 相关代码:
<bean id="registerController" class="com.xxxxx.sso.web.RegisterController"
p:userService-ref="userService"
p:validator-ref="registerValidator"
p:centralAuthenticationService-ref="centralAuthenticationService"
p:ticketGrantingTicketCookieGenerator-ref="ticketGrantingTicketCookieGenerator"/>
注: 关于centralAuthenticationService及ticketGrantingTicketCookieGenerator已声明在 spring-configuration/applicationContext.xml 和 ticketGrantingTicketCookieGenerator.xml中
分享到:
相关推荐
本文在已有的禅道集成CAS单点登录的客户端插件基础上进行的修改,因原有插件在我们的系统上调试无法成功,做了一些定制,环境如下: 1. CAS server 版本:4.0.0 2. 禅道开源版本: 9.6.3 3. 禅道CAS client 插件版本...
单点登录(Single Sign-On,简称SSO)是一种网络用户身份验证的机制,它允许用户在一次登录后,就可以在多个应用系统中自由切换而无需再次登录。在本案例中,我们将探讨如何使用`cas-server-webapp-4.0.0`来实现单点...
**SSO之CAS实现流程** 1. **用户访问应用**: 用户尝试访问一个需要SSO登录的Web应用。 2. **重定向到CAS**: 应用发现用户未登录,于是重定向用户到CAS登录页面。 3. **用户在CAS登录**: 用户在CAS服务器上输入...
在CAS + AD域的环境下,SPNEGO认证使得用户在登录Windows系统后无需再次输入密码即可访问应用,极大地提升了用户体验。 ##### 2.2 CAS集群基础架构 传统的CAS集群架构主要包括两大部分:Session共享与Ticket共享。...
单点登录是指用户在一个应用系统中登录后,可以在其他所有相互信任的应用系统中自动登录,而不需要再次输入凭证。这减少了用户的记忆负担,同时也提高了安全性,因为用户只需记住一套登录信息。 配置CAS单点登录...
客户端在成功登录后,会将TGT存储在用户的浏览器中,以便后续的自动登录。而Session是客户端应用中的用户会话,需要与TGT同步管理,确保登出操作的正确执行。 7. 安全考虑:在集成CAS过程中,必须考虑安全问题,如...
- **安装配置CAS实现单点登录 (v1.0).doc**:这是一个详细的文档,可能包含了CAS的安装、配置以及单点登录实现的具体步骤和注意事项,对理解CAS的部署流程非常有帮助。 - **www.pudn.com.txt**:这个文件可能是从...
4. **处理登录与登出逻辑**:配置完成后,Jeecg应用会自动重定向到CAS登录页面进行身份验证。验证成功后,CAS服务器会向Jeecg应用返回一个服务票证(ST),Jeecg应用通过这个票证向CAS服务器验证用户身份,然后创建...
8. **单点登出(Single Sign-Out,SSO)**:除了单点登录,CAS还提供了单点登出功能,允许用户在一处登出后,自动从所有已登录的应用中注销。 9. **自定义扩展**:CAS设计为高度可扩展,允许开发人员根据需求定制...
**基于Java语言开发的CAS单点登录系统** CAS(Central Authentication Service)是一种广泛使用的开源单点登录(Single Sign-On,SSO)框架,主要由耶鲁大学开发并维护。它旨在提供一种简单、安全的方式,使得用户...
CAS(Central Authentication Service)是基于Java的开源身份验证框架,主要功能是实现单点登录(Single Sign-On,简称SSO)。SSO允许用户通过一次登录,就能访问多个应用系统,无需再次输入凭证,大大提升了用户...
Spring Boot 1.5.4集成Shiro+CAS实现单点登录和权限控制是一个常见的企业级应用需求,它能够提供用户认证和授权的功能,并通过CAS(Central Authentication Service)实现跨域单点登录。以下是实现这一功能的具体...
成功后,CAS返回一个服务票据,Spring Security会用这个票据向CAS服务器换取用户票据,进而完成认证。授权则可以通过Spring Security的角色和权限控制实现。 5. **自定义逻辑**:可能需要根据实际需求扩展或定制...
CAS(Central Authentication Service)是Java开发的一个开源身份验证框架,它提供了一种集中式的认证服务,使得用户在访问多个应用系统时只需要登录一次,即实现单点登录(Single Sign-On,简称SSO)。这个技术在...
CAS(Central Authentication Service)是基于Java的开源身份验证框架,主要用于实现单一登录(Single Sign-On,简称SSO)。SSO允许用户在访问多个应用系统时只需登录一次,从而提高用户体验和安全性。在这个“cas ...
单点登录允许用户在一个应用系统中登录后,无须再次登录就能访问其他已注册的系统。这样既提高了用户体验,又简化了身份验证过程,降低了安全管理的复杂性。 在实际部署和使用过程中,你需要理解CAS的工作原理,...