developercenter部署cas

一:下载cas maven overlay 4.2 版本

官网下载连接:前端

https://github.com/apereo/cas-overlay-template/tree/4.2git

 

二:将项目导入idea

一、下载的文件为:cas-overlay-template-4.2.zipgithub

解压后,获得文件夹:cas-overlay-template-4.2web

文件夹内容为:spring

而后将文件夹复制到idea的工做空间(直接用idea在此位置打开也能够,只是我有一个专用的编辑空间),并更名为:cas-4.2json

二、使用idea打开项目后端

选择菜单:file——>open,而后在弹窗中选择解压的或者复制的文件夹,OK结束tomcat

而后等待项目下载依赖文件。app

三、因为此项目使用运行时的依赖,因此预编译时会报大量错误,但不影响编译运行。前后端分离

 

三:编译war包

在项目名上右键,选择run maven——>install

而后会在target目录中生成war包。

安装后的目录:

将war包放入tomcat目录下的webapps中,启动tomcat就可访问cas server了

localhost:8080/cas

默认的用户名/密码是:casuser/Mellon

 

四:改造cas server

一、认证明现的修改

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、添加其余不须要登录的功能的url映射(如注册,找回密码等)

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,或者使用注释扫描均可以。

 

6、更改流程中的结束节点,使后台只返回json字符串,实现先后端分离。

一、分析登录流程,知道登录成功后会展现成功页面,以下配置

使其不展现页面,则修改成:

原理:将view属性中的页面名更改成一个重定向,重定向到一个自定义的controller中(controller的地址须要在handlermapping中配置),而后利用respondbody注解向前台返回json字符串。

相关文章
相关标签/搜索