初见cas服务端3:研究认证过程

3 篇文章 0 订阅

首先感谢 这位博主,我参考了他的,他写的还是很详细的,https://blog.csdn.net/zhouzhiwengang/article/details/97926358

我看它实现了全自定义形式;我走另外一种,实质是一样的,因为我当时这样的想的,我只需要加一个验证码就可以了,其他的还是用cas框架提供的就行了,我按照这个思路缕了下源码,请看下面的吧。

 

我研究了下,我把研究思路贴出来。

首先研究源码最起码框架的默认的必定要走的代码那里打上断点;一旦就可以跟踪代码上下看看,就知道了

首先这是系统启动时扫描的,注意看,这我画框的标注

第二步,我们主要看这个

 

QueryDatabaseAuthenticationHandler h = new QueryDatabaseAuthenticationHandler(b.getName(), this.servicesManager, this.jdbcPrincipalFactory(), b.getOrder(), JpaBeans.newDataSource(b), b.getSql(), b.getFieldPassword(), b.getFieldExpired(), b.getFieldDisabled(), CollectionUtils.wrap(attributes));
        h.setPasswordEncoder(PasswordEncoderUtils.newPasswordEncoder(b.getPasswordEncoder()));

这两行是我们关注的,其他的,只是一些辅助的,我暂时还没看;

第一行就是验证,有效性的;第二行是确定生成加密实例的

ok,我们看看第一行的代码就知道了

 

这一块就是具体校验的部分,有时间可以看看,,

我们看看第二行代码,逻辑:h.setPasswordEncoder(PasswordEncoderUtils.newPasswordEncoder(b.getPasswordEncoder()));

ok,分析到这里,基本上就可以实现我们自定义登陆校验了,例如加上图片验证码,或者短信验证码之类的都是可以的;

其实网上也有一种继承这个类AbstractPreAndPostProcessingAuthenticationHandler 也是可以的,我这个人比较懒,我只需要加个验证码,其他的都共用cas框架提供的,这样既能满足使用框架的快捷,也能满足我,当然,如果不想依赖框架,可以继承这个类即可;

已经实现了,后面有时间在补上吧,

 

写了这几个类,就可以了,

 

时间不早了,先睡觉;2020年8月19日00:05:52

 

-------------------------------------------------------------------------------------------------------------------------------------

我把整个流程的调用链画一下

1、CustomUsernamePasswordCaptchaAuthenticationHandler 这个类是我定义的认证处理类,具体方法authenticateUsernamePasswordInternal
2、AbstractCustomUsernamePasswordAuthenticationHandler  doAuthentication
3、AbstractPreAndPostProcessingAuthenticationHandler 抽象的前处理和后处理认证处理程序 authenticate 认证方法
4、PolicyBasedAuthenticationManager  基于策略的身份验证管理器 authenticateAndResolvePrincipal 验证并解析方法 这个比较重要

着重说下PolicyBasedAuthenticationManager 基于策略的身份验证管理器

从这里可以看出,这个方法,主要接收了前台给我们的数据,,其实源码往上我也看了,就是webflow流程+cas的相关解析,然后调用这个类类的方法,对我们来说,看到这里就可以了,完全可以重写cas 的程序了

这个就是根据证书不同进行迭代了,找到对应的handle处理器

 

细节方面我也没仔细看,和springsecurity 比较像,思想差不多;

 

我这边给出源码,有需要的,请下载后运行即可

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值