单点登录跨域靠Redis安全保护用户登录(单点登录跨域redis)
单点登录(Single Sign On,SSO)引用跨域的技术,可以让用户在多个不同的域中登录一次便可访问多个系统。应用这种技术,可以让用户在更安全、高效的情况下访问系统。
一般来讲,客户端请求被跨域后,会被其他域阻拦,用户就无法访问。因此,常用的解决方案便是以Redis为予以保护。具体方法是,系统向Redis服务器发出请求,然后Redis服务器在建立一个Key-Value形式的键值对,通过其中的Value与分布式应用系统进行权限校验,如成功校验后,便允许用户登录分布式应用系统。
单点登录(SSO)跨域靠Redis安全保护用户登录的流程如下:
1. 用户访问系统
2. 系统发出请求,向Redis服务器发出key-value形式的键值对
3. 接收Redis服务器传回的key-value形式响应
4. 分布式应用系统进行权限校验
5. 校验成功,允许用户登录系统
6. 用户完成登录后,Redis服务器返回一个token ,供系统接口调用
此外,为了提高安全性,我们可以使用一些代码来进行优化。下面的代码展示了使用JWT来验证token的情况:
// 获取token
String token = request.getHeader(“token”);
// 验证token
try {
Jwt jwt = JwtHelper.decodeAndVerify(token, new HmacSHA256Signer(secret));
Clms clms = jwt.getClms();
// 将token set,并放入http请求头中
request.setAttribute(“token”, token);
request.setHeader(“token”, token);
}
catch (Exception e) {
throw new RestException(“token is not verify”);
}
通过以上介绍,可以看出,利用Redis来实现跨域SSO,既有效提高用户登录的安全性,也可以使用代码优化,进一步提高安全性。因此,单点登录跨域靠Redis保护用户登录,不但极大的提升了用户的体验,而且安全可靠。