1.CAS登录流程
CAS分为两个部分:CAS Server和CAS Client,每次请求首先进入client,client会识别有没有携带service ticket(CAS Server生成的唯一标识),如果没有则说明未登录,重定向到CAS Server,Server将登录页面发送给用户,用户填写好账号密码再提交到Server,登录通过Server会生成一个service ticket发送到CAS Client中,后续每次发送请求就会携带ticket。流程图如下:
2.CAS部署
首先下载CASwar包。我这里使用5.3版本,直接下载,配置好tomcat运行即可。
https://gitee.com/zzh971213/cas
当出现以下画面代表启动成功:
以上是登录地址,退出登录地址把地址中的login改为logout即可
默认的账号密码配置在application.properties中
3.CAS单点登录对接VUE
①在router—》index.js中配置全局路由钩子,在每个路由进入前调用,下面贴出部分代码
if (
from.path.includes('/authorize') &&
to.path.includes(config.project.loginHeaderRouter)
) {
window.location.href = 'http://localhost:8070/login?service=http://192.168.1.89:8080/#/login';
}
如果没登录则跳转到CAS的登录页面http://localhost:8070/login,这里重点说一下为什么要加?service=http://192.168.1.89:8080/#/login。是为了让CAS登录成功后重定向到service后面的地址
,在这里可能会报一个错:未认证授权的服务
解决办法:在HTTPSandIMAPS-10000001.json中将"serviceId" : “^(https|imaps)😕/.“,改为"serviceId” : "^(https|http|imaps)😕/.”,即加上http
效果图:注意地址栏的变化
打开vue项目的登录页
登录成功后跳转
配置退出登录的跳转页:在application.properties中添加一行,这样在输入localhost:8080/logout之后就会默认重定向到www.baidu.com
cas.logout.redirectUrl=http://www.baidu.com