UniAuth

开源权限管理框架
授权协议 Apache
开发语言 Java HTML/CSS
所属分类 程序开发、 安全相关框架
软件类型 开源软件
地区 国产
投 递 者 董新觉
操作系统 Linux
开源组织
适用人群 未知
 软件概览

一. 关于UNIAUTH

1.1.uniauth干什么的

它是一个统一登录+鉴权+权限管理的综合系统;它适用于各系统需要通过统一认证/授权,并能根据既定的角色和权限来规范业务操作的多子系统环境。

1.2.uniauth技术选型

基于jdk7,使用spring mvc4.2+mybatis3+spring security4+cas+cxf作为基础框架,数据库为mysql5.7,配置管理使用zookeeper3.4redis 作为可选项用于保存ticket和session信息,前端使用angularJS 1.x

二. 快速开始

2.1.编译打包

在源码目录执行命令

gradle warUniAuthServer、 gradle warCas、 gradle warTechopsWebsite,

分别可以在uniauth-server,cas,techops项目的build路径下得到uniauth.war 、  cas.war、  techops.war

2.2.初始化数据库

在mysql中create database uniauth,然后按rt顺序执行uniauth-server/src/script/sql 中所有的脚本; 管理员账号: shuanggui.fan@dianrong.com ,密码: $1234qweR

2.3.配置tomcat7

  • 添加环境参数 修改tomcat bin目录中catalina.sh文件,在正文首行后加入下面环境参数:

JAVA_OPTS="$JAVA_OPTS -Dcatalina.logs=/var/lib/tomcat/logs"  # log output
DR_CFG_ZOOKEEPER_ENV_URL="10.8.12.85:2181,10.8.12.85:2182,10.8.12.85:2183"  # zookeeper cluster address
export DR_CFG_ZOOKEEPER_ENV_URL
  • 修改端口 将上面tomcat复制粘贴三份,分别叫做 tomcatuniauth、  tomcatcas、 tomcat_techops,分别修改server.xml中监听端口,假定分别是:8080,8081,8082, 注意:同时修改其他shutdown,ajp端口

  • uniauth添加jndi数据源 在tomcat_uniauth的context.xml


2.4.配置zookeeper

在zokeeper中create下面节点数据

/com/dianrong/cfg/1.0.0/uniauth/cas_server.iscookiesecure false   // 线上环境一定是true
/com/dianrong/cfg/1.0.0/uniauth/cas_server http://localhost:8081/cas // cas服务器的部署base地址
/com/dianrong/cfg/1.0.0/uniauth/domains.techops http://localhost:8082/techops // techops的部署base地址
/com/dianrong/cfg/1.0.0/uniauth/uniauth_ws_endpoint http://localhost:8080/uniauth/ws/rs  // uniauth的webservice endpoint地址, base+/ws/rs

zookeeper的配置根路径为/com/dianrong/cfg/1.0.0, 该默认路径可通过在catalina.sh中 export DR_CFG_ZOOKEEPER_BASE_PATH变量来更改

2.5.部署启动

按下面顺序启动

  • 1.启动tomcatuniauth 将uniauth.war部署到tomcatuniauth 的webapps目录,启动tomcat

  • 2.启动tomcatcas 将cas.war部署到tomcatcas 的webapps目录,启动tomcat

  • 3.启动tomcattechops 将techops.war部署到tomcattechops 的webapps目录,启动tomcat

访问管理控制台techops

 

三. 系统结构

3.1. 模块组件依赖

uniauth模块依赖图.png 如上图,uniauth的核心模块:uniauth-servercommonshare-rwss-client,cas,techops

  • 三个独立应用:

(1)uniauth-server是提供数据访问的REST服务;用户,资源,权限数据通过它进行访问; (2)techops是web界面的管理控制台;通过techops录入资源,角色,做权限分配; (3)cas是单点登录系统;各个subsystem通过cas做sso认证;

  • 三个关键模块: (4)common定义了uniauth-server的接口,接口的数据模型以及cxf方式的访问实现;由它定义了数据接口,因此各个模块必须依赖它; (5)share-rw提供对uniauth-server功能的访问接口定义 ,cxf方式访问实现,由于牵涉到对数据的修改,因此只有管理系统才能依赖这个模块,如techops (6)ss-client是uniauth提供的sdk,各子系统依赖它后只需要少量的配置就可以完成sso,authentication 和 authorization的业务 (7)subsystem代表各个子系统,也是uniauth的客户端,各个需要用到sso,authentication和authorization的系统,比如techops

3.2.系统架构

组件调用关系 上图中分两条线

  1. step 1-7, include sso and authentication

Between step 7 and 8,the uniauth client send request to cas server for authentication user with st (get from step 6) then the client can get credentials(* include username *) from response data 。

  1. step 8 , include authorization After got credentials, uniauth client call uniauth-server to get user details and all permissions.

四. 参数配置

配置都是在zookeeper中添加节点数据

4.1. 核心配置

(1) cas本身的配置

/com/dianrong/cfg/1.0.0/uniauth/cas_server.iscookiesecure true #是否采用https的形式写cookie,生产为true
/com/dianrong/cfg/1.0.0/uniauth/cas_server     http://localhost:8081/cas  #cas的地址 。比如:http://localhost:8080/cas
/com/dianrong/cfg/1.0.0/uniauth/cas.st_use_times  2  #配置cas的service ticket可验证的次数,现在默认是2次。其实正常情况下只验证一次是最安全的。
/com/dianrong/cfg/1.0.0/uniauth/tenancyIdentity.check.switch   true #配置true 或 false。 用于指定是否强制的验证访问uniauth-server请求是否带有租户的验证信息
/com/dianrong/cfg/1.0.0/uniauth/uniauth_ws_endpoint    http://localhost:8090/uniauth/ws/rs #配置的uniauth-server的地址。比如:http://localhost:8090/uniauth/ws/rs

( 2 ) 邮箱配置 邮箱主要是为了验证码发送,密码重置

/com/dianrong/cfg/1.0.0/uniauth/internal.mail.smtp.host    邮箱服务器host,比如:smtp-dev.sl.com(默认值)
/com/dianrong/cfg/1.0.0/uniauth/internal.mail.smtp.port    邮箱服务器port,比如:25(默认值)
/com/dianrong/cfg/1.0.0/uniauth/internal.mail.smtp.femail   uniauth系统邮件的发送者,比如:TechOps-Notification(默认值)

4.2. redis配置

a 普通模式
  /com/dianrong/cfg/1.0.0/uniauth/redis.host  localhost    #cas采用的redis的host
  /com/dianrong/cfg/1.0.0/uniauth/redis.port   6379        #redis的port
b 哨兵模式
  /com/dianrong/cfg/1.0.0/uniauth/redis.database 0     #redis的数据库index
  /com/dianrong/cfg/1.0.0/uniauth/cas.iscluster true   #true or false  cas是否采用redis存储登陆的ticket
  /com/dianrong/cfg/1.0.0/uniauth/redis.password ''    #指定redis密码
  /com/dianrong/cfg/1.0.0/uniauth/redis.master  mymaster  #指定master节点name
  /com/dianrong/cfg/1.0.0/uniauth/redis.sentinels  10.18.19.51:5000,10.18.19.101:5000    #指定 redis集群节点列表,例如:10.18.19.67:5000,10.18.19.51:5000,10.18.19.101:5000

4.3. 集成系统配置

下面的xxx就是定义好的domain,如techops,crm,pms,cms,etc

/com/dianrong/cfg/1.0.0/uniauth/domains.xxx    http://localhost:8100/techops/  #xxx系统的地址。比如:http://localhost:8100/techops/
/com/dianrong/cfg/1.0.0/uniauth/domainx.xxx.loginPage  http://localhost:8100/techops/login.jsp #如果xxx系统采用自定义登陆页面,则此处配置其自定义登陆页面地址。
/com/dianrong/cfg/1.0.0/uniauth/domainx.xxx.auth_fail_url    http://localhost:8100/techops/login_fail.jsp  #如果xxx系统在进行st认证失败的时候跳转到失败页面(需要客户端集成做一些配置)。
/com/dianrong/cfg/1.0.0/uniauth/domains.xxx.showInHomePage true  #明确指定是否在uniauth登陆页能跳转到xxx系统的登陆页(是否出现选项框中),例如:true
 相关资料
  • 权限管理 权限管理机制是 hyperledger fabric 项目的一大特色。下面给出使用权限管理的一个应用案例。 启动集群 首先下载相关镜像。 $ docker pull yeasy/hyperledger:latest $ docker tag yeasy/hyperledger:latest hyperledger/fabric-baseimage:latest $ docker pull

  • 添加 找到一个你要添加的位置“右击” 在弹出的下拉选项中选择“添加同级”或“添加下级” 在弹出的对话框输入相关信息 路由名称 路由路径,支持 /app/{namespace}/{id:+0~9} 或 /app/:namespace/:id 两种写法 Icon: 如果是菜单填ant.design支持的icon就行 HTTP请求的Method,支持 GET、POST、DELETE、PUT等 是否是菜单

  • 细节 一个文件主要包含下列属性,ls -l - rwxrwxrwx user group date filename 111 101 101 归属用户的权限 归属群组的权限 其它用户的权限 归属用户 归属群组 日期信息 文件名称 对于文件夹,必须拥有它的可执行权限,才能够使用 cd 命令进入该文件夹;拥有可读权限,才能够使用 ls 命令查看该文件夹的文件列表。 root用户

  • 用户角色定义共有4种,分别是创建者、管理员、分析师和普通用户,按权限由大到小排列。 1.1. 1. 概念理解 创建者 产品唯一创建人,需个人基本信息及邮箱或手机号码认证,最高权限,可申请更换; 管理员 产品级别,数量可设置多个,与创建者之间除更换创建者之外,权限相同; 分析师 分析功能全部权限,不具有应用、用户权限管理功能权限; 普通用户 查看被授权的看板(未开放功能); 角色权限速查表: 权限类

  • 本节作者:cameluo Shield 是 Elastic 公司官方发布的权限管理产品。其主要特性包括: 提供集群节点身份验证和集群数据访问身份验证 提供基于身份角色的细粒度资源和行为访问控制,细到索引级别的读写控制 提供节点间数据传输通道加密保护输出传输安全 提供审计功能 以插件的形式发布 License管理策略 Shield 是一款商业产品,不过提供 30 天免费试用,试用期间是全功能的。过期

  • 链接 Shield Search-Guard 在 Elasticsearch 2.x 上的运用

  • 9.1. 数据权限管理 获取权限列表 http://localhost:1000/api/power/1.0.0/query 获取之前保存的的数据权限信息 http://localhost:1000/api/power/1.0.0/getJson 查询根据token获取当前团队下的用户 http://localhost:1000/api/team/1.0.0/users token是登录成功以后返

  • 除了为每一个用户设置权限,权限管理员 为连接及其数据库对象的权限提供另一查看方式。注意:只限于 MySQL、Oracle、PostgreSQL、SQL Server 和 MariaDB。 从用户的对象列表工具栏点击 权限管理员 并按照下列步骤进行: 在查看树展开节点直至到达目标对象。 选择对象并点击 添加权限 以打开窗口。 勾选用户以显示网格在右边的面板上。 在网格里,对照在 权限 列出的权限,勾