`
- 浏览:
153178 次
- 性别:
- 来自:
武汉
-
jasig-cas单点登录之自定义验证:
自定义验证(可参考系统自带的SimpleTestUsernamePasswordAuthenticationHandler):
找到WEB-INF/deployerConfigContext.xml,可以看出cas的配置和spring一样的,都是采用了bean来配置的。
找到bean(authenticationManager),该bean有2个属性credentialsToPrincipalResolvers、authenticationHandlers,
前者是用什么去溶解凭证(想想就知道,肯定是帐号和密码的对象。)、第二个是验证句柄(纯粹个人的理解)。
so在
credentialsToPrincipalResolvers列表中配置的是溶解凭证的东西,
authenticationHandlers列表中配置的是验证的东东。
请求验证句柄authenticationHandlers属性下的列表(可以配置多个,类似于filter链,有一个返回true则验证通过。),列表必须是实现AuthenticationHandler接口的类或抽象类(可以参考例子中的org.jasig.cas.authentication.handler.support.SimpleTestUsernamePasswordAuthenticationHandler)。
接口AuthenticationHandler是CAS验证的顶级接口.
接口Credentials是证书的意思,该接口的第一句注释:Marker interface for credentials required to authenticate a principal.所以我们必须去验证principal这样一个东西。principal其实也是一个接口,我们不能去验证接口,所以肯定是验证接口的实现类。cas-server提供的例子给出了org.jasig.cas.authentication.principal.SimplePrincipal这样一个实现类,观察之可以看出其实就是一个维护id--map的映射,只不过以Collections.unmodifiableMap(map)的形式返回不可修改的map。
在AuthenticationHandlerImpl(我们自己的AuthenticationHandler实现类)中直接返回true是不可能验证通过的。
必须满足2个条件:
第一:AuthenticationHandler接口的实现类的supports方法对其参数Credentials验证通过,其实直接return true;也行的。
第二:AuthenticationHandler接口的实现类的authenticate(真正的验证方法)必须拿到其参数credentials,(写到这里我发现Credentials似乎满天飞!!确实,这个玩意中文翻译为 证书嘛jasig的安全性靠的就是https的证书。),那么这个Credentials到底是何方圣神呢?通过观察SimpleTestUsernamePasswordAuthenticationHandler这个类发现他使用的证书对象是UsernamePasswordCredentials,一个实体bean而已。
满足了这2个条件后面的在你喜欢的地方return true;就OK了。验证会在你返回真的时候通过。
总结: AuthenticationHandler的实现AuthenticationHandlerImpl, (配置在authenticationHandlers属性下)
CredentialsToPrincipalResolver的实现CredentialsToPrincipalResolversImpl,(配置在credentialsToPrincipalResolvers属性下)
Principal的实现PrincipalImpl (凭证的id--map的映射,注意这个映射比较特殊,是不可以修改的)
Credentials的实现UsernamePasswordCredentials (一个实体bean而已)
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
Jasig CAS(Central Authentication Service)是一个开源的身份验证框架,主要用于实现单点登录(Single Sign-On, SSO)功能。它由Java编写,广泛应用于教育、企业和其他组织,以提供统一的用户认证服务。在本文中,...
spring下使用shiro+cas配置单点登录,多个系统之间的访问,每次只需要登录一次 ## 系统模块说明 1. cas: 单点登录模块,这里直接拿的是cas的项目改了点样式而已 2. doc: 文档目录,里面有数据库生成语句,采用的...
在本文中,我们将深入探讨如何将CAS客户端集成到您的应用程序中,实现单点登录功能。 首先,理解CAS的基本工作原理是至关重要的。CAS服务器作为一个中心认证服务,用户只需在该服务器上进行一次身份验证,之后便...
CAS(Central Authentication Service)是一种广泛使用的开放源代码的单点登录(Single Sign-On,简称SSO)系统。它允许用户通过一个认证界面访问多个应用系统,而无需在每个系统上分别进行登录。在这个"cas-server-...
总之,Jeecg配置单点登录是一个涉及CAS服务器设置、客户端集成、登录验证等多个环节的过程。正确配置后,能够提升用户体验,同时也强化了系统的安全性。通过学习和实践,你可以掌握这一重要技能,为自己的Java应用...
总之,CAS单点登录系统为多应用环境提供了一种高效的身份验证解决方案。通过Java和PHP客户端的集成,可以在多种技术栈的项目中实现一致的用户体验,同时也简化了用户管理和权限控制。在实际应用中,应根据项目需求...
CAS(Central Authentication Service)是基于Java的开源身份验证框架,用于实现单一登录(Single Sign-On,简称SSO)。这个"cas单点登陆带attribute客户端示例程序"是一个可以帮助开发者理解和实施CAS客户端集成的...
### 使用 CAS 实现 Mantis 单点登录与登出 #### 概述 单点登录(Single Sign-On,简称 SSO)是一种常见的身份认证模式,它允许用户在多个应用程序和服务中仅通过一次登录就能访问所有相关系统而无需多次输入密码。...
本示例将详细介绍如何在.NET项目中集成CAS单点登录。 首先,我们需要理解单点登录的概念。单点登录允许用户在一个系统中登录后,可以无须再次认证即可访问其他相互信任的系统,提高了用户体验和安全性。CAS作为一个...
JASIG CAS(Central Authentication Service)是一款开源的身份验证系统,广泛应用于多应用系统中的单点登录(Single Sign-On, SSO)。CAS 3 是其第三个主要版本,提供了更加稳定、可扩展和安全的认证服务。本文将...
CAS(Central Authentication Service)是一种广泛使用的单点登录(Single Sign-On, SSO)协议,它允许用户在一个系统上登录后,无须再次认证即可访问其他支持CAS的系统。在Laravel中集成CAS,可以实现跨多个应用的...
总结,通过学习和实践这个"利用CAS实现单点登录的完整实例",你将掌握如何使用Jasig CAS构建一个高效的单点登录系统,从而提升用户体验,简化身份验证管理,并加强系统的安全性。记得深入理解每个步骤,并根据实际...
在本教程中,我们将深入探讨如何利用 Laravel 框架构建一个中央认证服务(Central Authentication Service,简称 CAS),这是一个广泛用于实现单点登录(Single Sign-On,SSO)的协议。 1. **CAS 协议理解** CAS ...
【CAS单点登录配置详解】 CAS(Central Authentication Service)是一种广泛应用的开放源代码单点登录系统,主要用于实现网络环境中多个应用系统的身份验证集中管理。它允许用户在一个认证点登录后,无需再次输入...
总结来说,配置CAS单点登录涉及多个环节,包括SSL证书的生成与配置、CAS服务器的部署、用户验证逻辑的定制以及最终的测试验证。每一步都需要仔细操作,并确保所有配置正确无误,才能实现可靠的单点登录功能。