官网下载连接:前端
https://github.com/apereo/cas-overlay-template/tree/4.2git
一、下载的文件为:cas-overlay-template-4.2.zipgithub
解压后,获得文件夹:cas-overlay-template-4.2web
文件夹内容为:spring
而后将文件夹复制到idea的工做空间(直接用idea在此位置打开也能够,只是我有一个专用的编辑空间),并更名为:cas-4.2json
二、使用idea打开项目后端
选择菜单:file——>open,而后在弹窗中选择解压的或者复制的文件夹,OK结束tomcat
而后等待项目下载依赖文件。app
三、因为此项目使用运行时的依赖,因此预编译时会报大量错误,但不影响编译运行。前后端分离
在项目名上右键,选择run maven——>install
而后会在target目录中生成war包。
安装后的目录:
将war包放入tomcat目录下的webapps中,启动tomcat就可访问cas server了
localhost:8080/cas
默认的用户名/密码是:casuser/Mellon
一、认证明现的修改
Cas的认证接口是:AuthenticationHandler
Cas也提供了一些实现,而后不想介入cas源码太深,因此直接写了一个类实现AuthenticationHandler,也能够直接继承一些抽象类或者实现类。
个人实现类:SCASAuthenticationHandler,主要实现其中authenticate方法,其余方法能够模仿其余实现。
而后登录页面除了帐户和密码两个参数外,若是还有其余参数,也能够再继承另外一个类UsernamePasswordCredential,而后再子类中添加本身须要的参数属性。
个人子类:SSaturnCredential
认证明现和登录数据对象准备好后,再更改cas配置文件,使单点登陆系统引用咱们本身的实现。
二、首先更改deployerConfigContext.xml文件,在其中找到
<alias name="acceptUsersAuthenticationHandler" alias="primaryAuthenticationHandler" />
而后在下方添加acceptUsersAuthenticationHandler的bean:
<bean id="acceptUsersAuthenticationHandler" class="com.xxx.xxx.SCASAuthenticationHandler"/>
也就是咱们本身的认证处理器SCASAuthenticationHandler。
三、再修改流程定义文件:login-webflow.xml
找到<var name="credential"
class="org.jasig.cas.authentication.UsernamePasswordCredential"/>
把他注释掉,再添加bean
<var name="credential" class="com.xxx.xxx.credential.SSaturnCredential"/>
也就是咱们本身定义的登录数据接收对象。
四、若是登录页中添加了其余参数,则须要在login-webflow.xml流程文件中配置
找到id=“viewLoginForm”视图节点,而后在binding空间中绑定新增的参数属性,自定义的数据对象中必定要有此属性,或者也能够将required设为false,意思是此参数不是必须传入的。
四、将咱们改动过的两个或三个文件放入WebContent下的相同目录中(必定要是相同目录,若是缺乏相关路径手动创建),这样使用maven install时,就会根据pom中配置的overlay插件,用咱们改动的文件覆盖掉cas原来的配置文件。
5.一、在web.xml中找到cas的dispatcherServlet,而后添加其余功能controller的路径映射,使前端控制器能够拦截到。例如:controller中注册方法被@RequestMapping("/account/register")注释,则在添加如下servlet-mapping:
5.二、找到路径和处理器的映射配置:
cas不一样版本之间,此类的bean配置地点不一样,cas4.2.X是在applicationContext.xml配置的
如图在<util:properties>空间中添加属性<prop key="/account/*">accountController</prop>
5.三、在spring容器中加载accountController的bean,或者使用注释扫描均可以。
一、分析登录流程,知道登录成功后会展现成功页面,以下配置
使其不展现页面,则修改成:
原理:将view属性中的页面名更改成一个重定向,重定向到一个自定义的controller中(controller的地址须要在handlermapping中配置),而后利用respondbody注解向前台返回json字符串。