前言
它允许用户在一个地方登录后,能够访问多个受保护的应用程序,而不需要多次输入用户名和密码。CAS 由 Yale University 开发,并且是一个开源项目,现在由 Apereo Foundation 维护。
特点
单点登录(SSO):
用户只需要登录一次,就可以访问多个受保护的应用程序。 例如,用户在访问一个应用程序时登录,之后再访问其他受 CAS 保护的应用程序时,无需再次输入用户名和密码。 集中式身份验证:
所有应用程序的身份验证都由中央 CAS 服务器处理,简化了身份验证的管理。 管理员可以在一个地方集中管理用户身份和权限。 安全性:
用户的凭证(如用户名和密码)只在 CAS 服务器上存储和处理,减少了凭证泄露的风险。 CAS 支持多种安全协议和标准,如 SAML、OAuth 等。 灵活性:
CAS 可以与多种身份验证机制(如 LDAP、数据库、Active Directory 等)集成,提供灵活的身份验证方案。 支持多种编程语言和框架,如 Java、Python、Node.js、.NET 等。
原理
用户访问受保护的应用程序:
用户尝试访问一个受 CAS 保护的应用程序。 重定向到 CAS 服务器:
如果用户尚未登录,应用程序会将用户重定向到 CAS 服务器的登录页面。 用户登录:
用户在 CAS 服务器的登录页面输入用户名和密码。 CAS 服务器验证用户身份:
CAS 服务器验证用户的身份。如果验证成功,CAS 服务器会生成一个票据(ticket)。 重定向回应用程序:
CAS 服务器将用户重定向回原始应用程序,并附带一个票据(ticket)。 应用程序验证票据:
应用程序将收到的票据发送回 CAS 服务器进行验证。 CAS 服务器验证票据的有效性,并返回用户的身份信息。 用户访问应用程序:
应用程序根据用户的身份信息授予访问权限。
demo
if (to.path !== "/login") {
if (whiteList.indexOf(to.path) !== -1) {
next();
} else {
removeToken();
if (window.location.href.indexOf("ticket") === -1) {
//window.location.href = "/api/cas/login?service=http://localhost:8848/api";
window.location.href = "/api/cas/login";
} else {
console.log(window.location.href);
next();
}
//next({ path: "/login" });
}
} else {
next();
}
正是有了这个全局路由守卫导致如果访问的是不是login的话那么会跳转到/api/cas/login
proxy: {
"/api": {
target: "http:// 192.168.119.1:10095", // 移除末尾的 /api
changeOrigin: true,
rewrite: path => path.replace(/^\/api/, "")
}
},
vite.config.ts里边呢是有一个代理如下:
proxy: {
"/api": {
target: "http:// 192.168.119.1:10095", // 移除末尾的 /api
changeOrigin: true,
rewrite: path => path.replace(/^\/api/, "")
}
},