您的位置:首页 > 大数据 > 人工智能

saiku - 集成单点登录

2015-10-14 23:47 393 查看
思路:

自定义一个loginCallbackFilter用于单点登录成功后执行模拟用户认证授权登录的操作。

当授权成功后所有配置需要授权才能访问的url就再也不会被任何filter拦截,可随意访问了。

详细过程

01/ 自定义loginCallbackFilter类/自定义sso的properties信息/自定义security的properties信息

02/在web.xml中配置cas sso的servlet 并指定servlet-mapping 的 url 为 /ssoLogin

03/调用单点登录接口带上用户名密码

04/单点登录成功后调转到sso配置的successURL 该url是虚拟的/security/login 目的是为了让 loginCallbackFilter 拦截这个URL进行过滤处理

05/loginCallbackFilter拦截 successURL

06/判断单点登录成功后写入的session对象是否存在,不存在说明授权失败,给出错误提示

07/存在就验证这个用户有没有存在于本地的mysql数据表user里

08/如果user表没有该用户,插入该用户到mysql表。当存在该用户时比对密码,如果密码不一致则更新user表中的密码。

09/至此本地mysql的user表中必定存在有单点登录的用户,调用sessionService的login方法执行认证授权操作[一定能通过]

10/此时,创建了用户的session并且系统已经授权完毕,isFullyAuthenticated() 为 true

11/重定向到targetUrl -> localhost:8080

12/通过调用/rest/saiku/session [GET] 获取到session信息

13/登录成功,进入管理台操作cube

探索过程中遇见的几个问题

单点登录过来的用户没有权限,那么将用户创建到本地mysql时怎么赋予权限

解决:默认给一个最低的ROLE_USER权限
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: