博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
cas 认证管理器
阅读量:5887 次
发布时间:2019-06-19

本文共 2257 字,大约阅读时间需要 7 分钟。

CAS-默认的认证管理器:AuthenticationManagerImpl

这个bean,就是cas的核心类,认证管理器。

在cas中定义了两个术语:

credentials    即需要认证用户信息载体    例如在web应用中,用户通过前台界面输入用户名,密码,然后经cas认证成功或失败。    这个credentials它的其中一个实现类 org.jasig.cas.authentication.principal.UsernamePasswordCredentials,    就代表了持有前台输入的用户名以及密码    Principal cas认证后返回的信息载体,默认只返回用户名
authenticationHandlers。    从字面意思可以看出是认证处理器,即cas如何对于用户信息进行认证,即到哪里去认证;    credentialsToPrincipalResolvers对于认证之后的用户信息转换为principal的转换解析器。    这两个属性都是list既可以配置多个。    在cas认证过程中逐个执行authenticationHandlers中配置的认证管理,直到有一个成功为止,    然后在执行credentialsToPrincipalResolvers过程直到有一个成功为止。    这是cas认证管理器的默认配置,我们从上面的分析会发现,默认配置在进行认证及转换解析是低效的,    原因是它要执行两次for循环(当然这个低效也是相对的),那么是否可以提交应用效率呢?答案是肯定的。

cas的认证管理器有三个实现类

org.jasig.cas.authentication.AuthenticationManagerImpl;org.jasig.cas.authentication.DirectMappingAuthenticationManagerImpl;org.jasig.cas.authentication.LinkedAuthenticationHandlerAndCredentialsToPrincipalResolverAuthenticationManager第一个是默认实现类,第二个和第三个可以用来提高效率实现。对于普通的不追求性能的系统来说,cas的默认认证管理器是最合适不过了,它非常的灵活,易于扩展,只需要追加认证管理器与principal转换解析器就可以了,而无需关心其他。而在我们追求性能,而且需要对一种credentials进行多次认证处理(例如对于用户名密码组合从多个数据源进行验证),我们可以应用LinkedAuthenticationHandlerAndCredentialsToPrincipalResolverAuthenticationManager认证管理器;而对于不同credentials进行认证处理,我们可以应用DirectMappingAuthenticationManagerImpl认证管理器。LinkedAuthenticationHandlerAndCredentialsToPrincipalResolverAuthenticationManager从类名可以猜出它是将认证处理器与转换解析器进行对应实质上它就是做这件事件的,即将一个authenticaltionHandler指定一个credentialToprincipalResolver。它的一般配置与如下类似
DirectMappingAuthenticationManagerImpl,它有一个private Map
,DirectAuthenticationHandlerMappingHolder> credentialsMapping属性,即对每一种credentials绑定一个DirectAuthenticationHandlerMappingHolder,而DirectAuthenticationHandlerMappingHolder实质就是持有一个认证处理器与一个pricipal转换解析器,这样就能将credentials,认证处理器与转换解析器进行绑定,它的一般配置类似如下:

转载于:https://www.cnblogs.com/ssgao/p/8817130.html

你可能感兴趣的文章
v4l2驱动文档之——streaming IO【转】
查看>>
Java初学总结
查看>>
Android开发之旅:环境搭建及HelloWorld
查看>>
C# 中重用c/c++旧模块
查看>>
关于SWT/JFace中其他常用的事件
查看>>
JAVA中写时复制(Copy-On-Write)Map实现
查看>>
SQL Server 存储过程生成insert语句
查看>>
算法——字符串匹配算法自己有限的驾驶机器
查看>>
紧张的学习
查看>>
对一个正整数n,求出n!中末尾0的个数。
查看>>
Android中Services之异步IntentService
查看>>
Linux学习总结—缺页中断和交换技术【转】
查看>>
运用反射实现多层和多数据库开发
查看>>
银河台的文字语言转换自动广播做的不错啊
查看>>
jQuery打造智能提示插件
查看>>
操作系统常识相关
查看>>
蓝牙HID协议笔记【转】
查看>>
Linux 创建子进程执行任务
查看>>
Java8-Stream-No.02
查看>>
iOS开发-UITextView实现PlaceHolder的方式
查看>>