页面树结构

版本比较

标识

  • 该行被添加。
  • 该行被删除。
  • 格式已经改变。

用户集成是系统集成中最常见的要求之一。当有多套系统同时使用时,客户往往希望统一进行用户管理、统一登录认证,也就是说只在一个系统中维护基础用户信息、只登录一次(单点登录)就可以访问不同系统的内容。用户集成包含两个方面内容:

用户同步:指多套系统拥有相同的用户信息,当以外部系统作为统一用户管理平台时,常采用如下两种方式实现 Smartbi 用户同步:
  • 方式一:使用存储过程或 ETL 定时将第三方系统中的用户等信息同步到 Smartbi 用户表中。
  • 方式二:在第三方系统中使用 Smartbi 用户管理的远程调用接口实现用户等信息的同步。
  • 方式三:通过EXCEL导入方式实现用户信息同步。
  • 方式四:通过计划任务同步用户信息,建议使用该方案(请参考 通过计划任务自动同步用户机构和角色)。
    用户验证:验证用户是否是合法的系统用户,Smartbi 既可以使用自己的验证体系,也支持使用第三方系统的用户验证体系。

    注意事项:Smartbi 还有角色概念,无论哪种集成方式,都要求在 Smartbi “管理 > 用户管理”模块中创建角色,并设置角色的操作权限和数据权限;用户必须被赋予角色,才能登录 Smartbi 并使用相应的功能。

     

    1.概要说明

           用户同步是指有多套系统(包括Smartbi系统)都拥有用户信息,想要当以第三方系统作为统一用户管理平台时,需要将第三方系统的用户同步到Smartbi系统中。

    2.用户同步的几种方法

    面板
    borderColor#BBBBBB
    bgColor#F0F0F0
    borderWidth1
    borderStylesolid

    目录
    maxLevel2
    相关文档:

    用户同步方法
    与第三方系统资源集成
    方案简述
    使用第三方系统进行用户管理
    优点
    用户集成常见问题
    缺点
    _同步数据库相关用户表_同步数据库相关用户表 _Toc319507164_Toc319507164 _Toc321489195_Toc321489195同步数据库相关用户表

    说明:

    可以通过存储过程或 ETL 定时将第三方系统的用户信息同步到 Smartbi 知识库相关的用户表中。同步数据库时涉及到的表如下:

    数据表

    含义说明

    t_group

    用户组表,记录用户组(机构)的信息。

    t_user

    用户表,记录所有用户信息。

    t_group_user

    用户组与用户对应表。相关字段:t_user.c_userid、t_group. c_groupid

    t_role

    角色表,记录系统所有角色的信息。相关字段:t_group. c_groupid

    t_group_role

    用户组与角色对应关系表。相关字段:t_role.c_roleid、t_group. c_groupid

    t_user_role

    用户与角色对应关系表。相关字段:t_role.c_roleid、t_user. c_userid

    t_funclist

    操作权限表。

    t_role_func

    角色与操作权限关系表。相关字段:t_role.c_roleid、t_funclist. c_funcid

     

    字段类型:

    下文表结构中的字段类型等信息,均是针对 MySQL 5.0 而言,其它数据库类型的对应关系如下表所示:

    数据库类型

    MySQL

    Oracle

    DB2

    字符串

    VARCHAR

    VARCHAR2

    VARCHAR

    整数

    INTEGER

    INTEGER

    INTEGER

    浮点数

    DOUBLE

    DOUBLE

    DOUBLE

    日期时间

    DATETIME

    DATE

    DATE

    长文本

    LONGTEXT

    CLOB

    CLOB

     

    注意事项:

    • 同步组:需要同步表t_group,如果需要给组赋角色,则还需同步表t_group_role;
    • 同步用户:需要同步表t_user、t_group_user 、t_user_role;
    • 同步角色:需要同步表t_role;
    • 同步操作权限:需要同步表t_funclist、t_role_func,在表t_funclist中新增操作权限如funcTest,必须把此权限赋予给角色ADMINS,即在表t_role_func中增加一条funcTest与ADMINS的记录。

     

    _t_group(用户组表)_t_group(用户组表) _Toc319507165_Toc319507165t_group(用户组表) _Toc205280204_Toc205280204 _Toc211506862_Toc211506862t_group 用户组表,记录用户组的信息。通过字段c_orgid,实现用户与机构的关联。

    字段名

    中文含义

    数据类型

    约束

    c_groupid

    组ID

    VARCHAR(255)

    NOT NULL

    c_pgroupid

    父组ID

    VARCHAR(255)

    default NULL

    c_groupname

    组名称

    VARCHAR(255)

    default NULL

    c_groupalias

    组别名

    VARCHAR(255)

    default NULL

    c_groupdesc

    描述

    VARCHAR(255)

    default NULL

    c_orgid

    机构编号

    VARCHAR(255)

    default NULL

     

    _t_user(用户信息表)_t_user(用户信息表) _Toc319507166_Toc319507166t_user(用户信息表) _Toc205280205_Toc205280205 _Toc211506863_Toc211506863 _Toc205280227_Toc205280227 _Toc211506867_Toc211506867t_user 用户表,记录所有用户信息。

    字段名

    中文含义

    数据类型

    约束

    c_userid

    用户ID

    VARCHAR(255)

    NOT NULL

    c_username

    用户名称

    VARCHAR(255)

    default NULL

    c_useralias

    用户别名

    VARCHAR(255)

    default NULL

    c_userpwd

    用户密码

    VARCHAR(255)

    default NULL

    c_userdesc

    描述

    VARCHAR(255)

    default NULL

    c_isenabled

    用户是否启用

    VARCHAR(255)

    default NULL

    c_extended

    用户扩展信息

    LONGTEXT

    default NULL

    c_defaultgrp

    默认组

    VARCHAR(255)

    default NULL

    信息

    备注:c_defaultgrp 在新版本中该字段已被弃用。

     

    _t_group_user(用户组与用户对应表)_t_group_user(用户组与用户对应表) _Toc319507167_Toc319507167t_group_user(用户组与用户对应表) _Toc205280206_Toc205280206 _Toc211506864_Toc211506864t_group_user 用户组与用户对应表。相关字段:t_user.c_userid、t_group. c_groupid。

    字段名

    中文含义

    数据类型

    约束

    c_id

    ID

    VARCHAR(255)

    NOT NULL

    c_userid

    用户ID

    VARCHAR(255)

    default NULL

    c_groupid

    组编号

    VARCHAR(255)

    default NULL

    c_isdefault

    是否默认组

    INTEGER

    default NULL

     

    _t_role(角色表)_t_role(角色表) _Toc319507168_Toc319507168t_role(角色表) _Toc205280217_Toc205280217 _Toc211506865_Toc211506865t_role 角色表,记录系统所有角色的信息。相关字段:t_group. c_groupid。

    字段名

    中文含义

    数据类型

    约束

    c_roleid

    角色ID

    VARCHAR(255)

    NOT NULL

    c_rolename

    角色名称

    VARCHAR(255)

    default NULL

    c_rolealias

    角色别名

    VARCHAR(255)

    default NULL

    c_groupid

    组ID

    VARCHAR(255)

    default NULL

    c_roledesc

    描述

    VARCHAR(255)

    default NULL

    c_sysid

    应用系统ID

    VARCHAR(255)

    default NULL

     

    _t_group_role(用户组与角色对应表)_t_group_role(用户组与角色对应表) _Toc319507169_Toc319507169t_group_role(用户组与角色对应表)

    t_group_role 用户组与角色对应表。相关字段:t_role.c_roleid、t_group. c_groupid。

    字段名

    中文含义

    数据类型

    约束

    c_id

    ID

    VARCHAR(255)

    NOT NULL

    c_roleid

    角色ID

    VARCHAR(255)

    default NULL

    c_groupid

    组ID

    VARCHAR(255)

    default NULL

    c_isdescend

    是否子孙用

    INTEGER

    default NULL

     

    _t_user_role(用户与角色对应表)_t_user_role(用户与角色对应表) _Toc319507170_Toc319507170t_user_role(用户与角色对应表) _Toc205280228_Toc205280228 _Toc211506868_Toc211506868t_user_role 用户与角色对应表。相关字段:t_role.c_roleid、t_user. c_userid。

    字段名

    中文含义

    数据类型

    约束

    c_roleid

    角色ID

    VARCHAR(255)

    default NULL

    c_userid

    用户ID

    VARCHAR(255)

    default NULL

     

    _t_funclist(操作权限表)_t_funclist(操作权限表) _Toc319507171_Toc319507171t_funclist(操作权限表) _Toc217874651_Toc217874651 _Toc217815587_Toc217815587 _Toc217790482_Toc217790482 _Toc205280203_Toc205280203t_funclist 操作权限表。

    字段名

    中文含义

    数据类型

    约束

    c_funcid

    功能ID

    VARCHAR(255)

    PK

    c_funcname

    功能中文名

    VARCHAR(255)

    default NULL

    c_funcalias

    功能别名

    VARCHAR(255)

    default NULL

    c_funcdesc

    功能描述

    VARCHAR(255)

    default NULL

    c_sysid

    所属系统ID

    VARCHAR(255)

    default NULL

    c_pfuncid

    父功能ID

    VARCHAR(255)

    default NULL

    c_isbuiltin

    是否内置操作权限,"1"为是。

    VARCHAR(255)

    default NULL

     

    _t_role_func(角色与操作权限关系表)_t_role_func(角色与操作权限关系表) _Toc319507172_Toc319507172t_role_func(角色与操作权限关系表)

    t_role_func 角色与操作权限关系表。相关字段:t_role.c_roleid、t_funclist. c_funcid。

    字段名

    中文含义

    数据类型

    约束

    c_roleid

    角色编号

    VARCHAR(255)

    default NULL

    c_funcid

    功能编号

    VARCHAR(255)

    default NULL

     

    _调用API接口实现用户同步_调用API接口实现用户同步 _Toc319507173_Toc319507173 _Toc321489196_Toc321489196调用API接口实现用户同步

    说明:

    Smartbi 提供 Java 和 JavaScript 两种 API 供外部系统调用实现用户信息同步。

    1、服务器端SDK同步用户

    Image Removed

    2、浏览器端SDK同步用户

    Image Removed

     

    实现步骤:

    1、当在第三方系统进行增删用户/用户组等操作时,后台程序调用 Smartbi 提供的 API 接口同步将用户信息同步到 Smartbi 系统中。

    2、调用方法请参考开发接口中 服务器端SDK 和 浏览器端SDK 中的操作步骤。

    3、演示图的源码请参考服务器端SDK同步用户.rar浏览器端SDK同步用户.rar

    系统方法:

    系统提供的用户管理方法示例如下。

    方法名

    作用

    createDepartment(parentGroupId, groupName, groupAlias, desc, departmentCode)

    创建用户组。

    createRole(roleName, roleAlias, desc, groupId)

    创建角色。

    createUser(parentGroupId, userName, userAlias, desc, password, isEnabled)

    创建用户。

    deleteDepartment(groupId)

    删除用户组。

    deleteRole(roleId)

    删除角色。

    deleteUser(userId)

    删除用户。

    getCurrentUser()

    获取当前登录用户信息。

    getDefaultDepartment(userId,hierId)

    获取用户的默认组,hierId为"DEPARTMENT"。

    getDepartmentById(id)

    通过用户组ID获取用户组信息。

    getDepartmentByName(name)

    通过名称获取用户组对象。

    updateDepartment(groupId, groupAlias, desc, departmentCode)

    修改用户组。

    updateRole(roleId, roleAlias, desc)

    修改角色。

    updateUser(userId, alias, desc, password, isEnabled)

    修改用户。

    assignDepartmentsToRole(roleId,  groupIdList)

    给角色分配用户组。

    assignDepartmentsToUser(userId,  groupIdList)

    修改用户的所属组。

    assignRolesToDepartment(groupId,  roleForGroupList)

    分配角色给用户组。

    assignRolesToUser(userId,  roleIdList)

    给用户分配角色。

    assignUsersToGroup(groupId,  userIdList)

    修改组所拥有的用户。

    assignUsersToRole(roleId,  userIdList)

    给角色分配用户。

    更多具体方法以及帮助请参考 JAVA API文档

    Java API 帮助文档。 

     

    _通过EXCEL导入用户实现同步_通过EXCEL导入用户实现同步通过EXCEL导入用户实现同步

    说明:

    Smartbi 提供导入EXCEL信息实现用户信息同步功能。

     

    实现步骤:

    1、登录Smartbi,参考导入用户信息

    下面对模版文件进行详细说明:该文件有三个sheet页,分别为:用户、组、角色,以下分别从用户、组、角色三方面介绍导入信息该如何填写。

    1) 用户,格式如下:

    Image Removed

    • 用户ID:必填项,内容可随意定义,但必须保证其唯一性。对应t_user表中的c_userid。
    • 用户名称:必填项,登录名称,必须保证其唯一性。对应t_user表中的c_username。
    • 用户别名:别名,对应t_user表中的c_useralias。
    • 用户密码:密码,对应t_user表中的c_userpwd。
    • 用户描述:描述。对应t_user表中的c_userdesc。
    • 是否启用:该用户是否可以正常使用系统。1为启用、0为禁用,若不填写,则默认为禁用。对应t_user表中的c_isenabled。
    • 用户所属组ID:用户所在组的组ID,此ID需要与“组”sheet页中的组ID对应,多个组用半角符号;分隔。若不填写,则默认为根组。对应在t_group_user表中的增加相关记录。
    • 用户角色:用户所拥有的角色ID,此ID需要与“角色”sheet页中的角色ID对应,多个角色用半角符号;分隔。对应在t_user_role表中增加相关记录。

    2) 用户组,格式如下:

    Image Removed

    • 组ID:必填项,内容可随意定义,但必须保证其唯一性。对应t_group表中的c_groupid。
    • 组名称:必填项,名称,必须保证其唯一性。对应t_group表中的c_groupname。
    • 组别名:别名,对应t_group表中的c_groupalias。
    • 组描述:描述。对应t_group表中的c_groupdesc。
    • 机构编号:对应t_group表中的c_orgid。
    • 父组ID:对应t_group表中的c_pgrounpid。

    3) 角色,格式如下:

    Image Removed

  • 角色ID:必填项,内容可随意定义,但必须保证其唯一性。对应t_role表中的c_roleid。
  • 角色名称:必填项,名称,必须保证其唯一性。对应t_role表中的c_rolename。
  • 角色别名:别名,对应t_role表中的c_rolealias。
  • 角色描述:描述。对应t_role表中的c_roledesc。
  • 角色所属组ID:对应t_role表中的c_groupid。若此项不填写,系统自动把角色创建在根组下。
    使用第三方系统的用户验证使用第三方系统的用户验证使用第三方系统的用户验证

    说明:

    实际项目中往往存在多个系统需要统一登录认证,客户要求将某个系统作为统一登录认证平台,其余系统访问此系统来进行登录认证。这种情况下,不需要再使用 Smartbi 产品的用户管理模块来管理组和用户,但还需要保留通过角色来设置操作权限。Smartbi 用户管理模块为了应对这种需求,提供了一个可以根据需要扩充的用户验证方式,让项目能根据实际情况开发不同的需求。如下图所示,根据实际情况扩展开发实现接口类,即可使用其他系统用户验证平台。在 Smartbi 用户管理模块中添加自定义的身份验证类,并将第三方系统用户验证平台上的用户、组、角色等信息同步到 Smartbi 用户管理模块中,并实现登录。

    Image Removed

     

    实现步骤:

  • 参考“插件开发框架”,开发一个项目扩展包;(也可以直接创建一个java项目)
  • 在扩展包项目中新建一个Java类 com.mycomp.mypackage.MyAuth,并且实现接口 IAuthentication;可参考AD域登录示例:ADAuth
    Image Removed
  • 参考“扩展包部署”文档,部署该项目扩展包;(如果步骤1中未使用扩展包方式,此时需要把实现的java类打成jar包,放在smartbi的war包lib目录下)
  • 打开smartbi的配置界面(http://localhost:38080/smartbi/vision/config),如下图红色框所示。修改加密类型为"CLASS";修改登录验证类为MyAuth类的全名com.mycomp.mypackage.MyAuth;
    Image Removed
     
  • 此后 Smartbi 系统中需要进行用户登录验证的时候,皆会跳转到 MyAuth 类中由其完成用户的登录验证。
  •  

    注意事项:

    具体接口方法和示例类请参考 第三方用户验证API文档

     

    使用第三方系统的权限验证使用第三方系统的权限验证使用第三方系统的权限验证

    说明:
    实际项目中往往存在多个系统需要统一权限认证,客户要求将某个系统作为统一认证平台, Smartbi 为了应对这种需求,提供了一个可以根据需要扩充的权限验证方式,让项目能根据实际情况开发不同的需求。

    实现步骤:

    1. 参考“插件开发框架”,开发一个项目扩展包;
    2. 在扩展包项目中新建一个Java类 com.mycomp.mypackage.MyResourcePermissionAuth,并且实现接口 IResourcePermissionAuthorization
    3. 编辑 Smartbi 服务器配置文件smartbi-config.xml,如下图红色框所示。增加节点resource-permission-authorization,其属性为 MyResourcePermissionAuth 类的全名 com.mycomp.mypackage.MyResourcePermissionAuth;
      Image Removed
    4. 参考“扩展包部署”文档,部署该项目扩展包;
    5. 此后 Smartbi 系统中需要进行资源权限验证的时候,皆会跳转到 MyResourcePermissionAuth 类中由其完成资源权限验证。

     

    注意事项:

    具体接口方法和示例类请参考 第三方权限验证API文档
    使用存储过程或 ETL 定时将第三方系统中的用户等信息同步到 Smartbi 用户表中
    1. 数据库底层同步用户,速度快
    2. 不依赖系统是否启动
    3. 支持定时同步
    1. 实现难度较大
    通过API接口同步用户在第三方系统中使用 Smartbi 用户管理的远程调用接口实现用户等信息的同步
    1. 可监听第三方系统的用户变化,做到实时同步
    1. 修改第三方系统代码,嵌入同步用户的代码
    2. 需要用到有用户管理权限的Smartbi用户的用户名和密码
    通过Excel导入同步用户通过Smartbi提供的EXCEL模板将用户信息导入到Smartbi中
    1. 实现难度低,不需要编写任何代码
    1. 需要手动填充Excel模板中的用户信息
    2. 需要手动同步用户
    3. 不支持定时同步
    通过计划任务同步用户在Smartbi中创建任务计划,定时的将第三方系统的用户同步到Smartbi
    1. 不需要额外的程序或者修改第三方系统代码
    2. 可实现定时自动同步
    3. 任务脚本编写难度低
    1. 无法做到实时同步



    注意

    注意事项:

    1、Smartbi 还有角色概念,无论哪种同步方式,都要求在 Smartbi “系统运维 > 用户管理”模块中创建角色,并设置角色的操作权限和数据权限;用户必须被赋予角色,才能登录 Smartbi 并使用相应的功能。

    2、若是同步第三方系统用户过程中不考虑同步密码,则需要自定义 用户验证,不使用Smartbi的登录验证逻辑,而是在第三方系统中进行用户验证。