您的位置:首页 > 其它

通过shiro验证实现两个平台单点登录

2017-12-08 10:28 393 查看
之前的一个业务系统需要迁移到另外一个平台上。但对之前的系统不想有过多的修改。

一个实现方案是通过shiro验证用户信息,来实现单点登录



这里通过中间数据库存储用户登录信息。业务系统在原有的shiro验证逻辑上,增加一个和IUAP平台相同的验证逻辑;这样业务系统就支持两种登录验证逻辑,从而实现单点登录。

登录IUAP平台后,通过配置业务系统的菜单,可以在平台上直接访问,这样看起来是一个系统,实际后台是跑了两个系统。

关于用户信息,两边必须能把用户信息关联起来,在业务系统当判断到时按IUAP平台的登录逻辑验证成功后,会从cookies中读取用户名,并记录用户的登录信息,这样在IUAP平台访问业务系统时,业务系统这边也能取到当前的登录用户信息。

在shiro中需要覆写认证回调函数doGetAuthenticationInfo,在原先的基础上,增加IUAP平台的登录成功的获取用户方式

String username = null;// 用户代码
String valilogin = null; //验证短信验证码
if (isIuapCertificate) {// IUAP登录
StatelessToken statelessToken = (StatelessToken) authcToken;
username = statelessToken.getUsername();
} else {
UsernamePasswordCaptchaToken token = (UsernamePasswordCaptchaToken) authcToken;
username = token.getUsername();
valilogin = token.getCaptcha(); //验证短信验证码
}

UserEntity user = null;
try {
user = userService.findByLoginName(username);
} catch (ServiceException e) {
logger.error("查询用户出错:" + e.getMessage(), e);
throw new UnknownAccountException("查询用户出错:" + e.getMessage());
}
if (user == null) {
throw new UnknownAccountException("系统无法找到用户:" + StringFilter(username));
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐