目的:用户统一从CAS进行登录,进入到统一门户页面,可以通过统一门户跳转到quickbi页面,在统一门户创建的用户以及用户权限(主要指数据权限,如区县级用户只看到报表区县级数据,地市级看到地市级数据)可以同步到quickbi。
首先第一步,我们先进行CAS与quickbi单点登录的对接,登录流程如下:
- 修改quickbi配置页面(页面地址以及账号可以找部署人员咨询),页面配置如下:
页面相关配置说明如下:
按照如上配置完成后效果如下:
注意:公钥和私钥的生成是从管理员账号下的 组织管理——》识别码 生成的,该参数如果填写错误,创建账号调接口时将会提示Error msgerror response: errorCode: OE10010106, errorMsg: api is not authorized, traceId :
编写登录态校验接⼝以及⽤户信息接⼝
登录态校验接口:根据quickbi传输的登录态调用cas的serviceValidate接口获取用户信息(注意:cas的serviceValidate接口参数名称为ticket,因此登录态校验接口的参数名称如果也是ticket,需要将该接口放入到不对接cas单点登录的服务,否则会被cas拦截,导致接口调不到),拿到返回信息后将用户id返回给quickbi,代码如下:
String url = http://cas ip:端口+/cas/serviceValidate?ticket=登录态+"&service="+http://统一门户 ip:端口+认证接口;
ValidateTicketResonse validateTicketResonse = new ValidateTicketResonse();
HttpResponse httpResponse = HttpUtil.createGet(url).execute();
if(httpResponse.isOk()){
String body = httpResponse.body();
log.error("返回信息body:"+body);
try{Document docResult=XmlUtil.readXML(body); String value = (String) XmlUtil.getByXPath("//cas:serviceResponse/cas:authenticationSuccess/cas:user", docResult, XPathConstants.STRING); String [] strs = value.split(" "); String userCode = strs[strs.length-1]; //根据登录账号查询统一门户用户id Long operatorId = fouraUserInfoService.getUserIdByUserCode(userCode); if(operatorId == null || operatorId < 1){ return new ResultResponse(true,"700","验证失败",validateTicketResonse); } validateTicketResonse.setIsLogin(true); validateTicketResonse.setUserId(operatorId.toString()); return new ResultResponse(true,"200","验证成功",validateTicketResonse); }catch (Exception e){ log.error("获取用户信息失败",e); return new ResultResponse(true,"700","验证失败",validateTicketResonse); } }else{ return new ResultResponse(true,"700","验证失败",validateTicketResonse);
}
用户信息接口:根据quickbi传输的用户id参数获取用户详细信息
至此,CAS与quickbi单点登录功能对接完成,可以将quickbi注册到统一门户中,通过统一门户跳转到quickbi页面,但是cas的用户需要手工再quickbi再次创建一遍。
第二步进行quickbi权限配置
主要进行quickbi工作空间、设置省市县用户标签、新建用户组、将页面集中授权给用户组、设置数据集的行级权限的配置。
新建工作空间:
设置省市县用户标签:
新建用户组(所有用户权限是一样的,方便我们授权时将无需关注用户再quickbi的权限):
将页面集中授权给用户组(数据报表用户组下的人看到的菜单是一样的,数据权限不一样):
设置数据集的行级权限(控制各个数据源的数据权限,防止所有人看到的数据都是一样的):
至此,quickbi的配置已完成。
第三步进行cas与quickbi用户的打通,用户对接流程如下:
按照上图所示,调用quickbi接口。
至此,cas的用户与quickbi的用户打通,cas创建的用户将会同步到quickbi,并授予quickbi相应的权限