7.Auth - SpringCloud/spring-cloud-radar GitHub Wiki
1. 页面权限控制
1.1. 用户角色
角色说明:主要分为普通用户、应用管理员、超级管理员
-
普通用户:拥有所有应用以及实例的查看权限,没有操作权限。
-
应用管理员:特定应用的管理员,对于指定应用以及该应用所属的实例具有操作权限。应用的操作,主要为更新应用的版本号以及编辑应用元数据信息。这里可以修改应用的管理员,应用的所有者和成员为该应用的管理员。实例的操作权限,主要可以对于实例进行“拉入/拉出”操作以及对于实例的“一键启停”操作。当用户为该应用的管理员时,用户只可以操作该应用对应的实例。其他实例只显示状态,不显示操作按钮。
-
超级管理员:系统管理员,对于所有应用和实例都具有操作权限,并且拥有系统权限,可以实时测试实例的运行情况,查看应用、实例、集群的缓存信息和trace信息等,具体可参照Radar界面操作。超级管理员可以通过配置文件中配置
radar.admin.username=***
,值为用户的用户id,多个以逗号分隔。
1.2. 权限实现
权限实现需要实现RoleService接口,该接口主要有一个方法
int getRole(T t);//获取用户的角色
这里在radar-dependency-ui
模块内,提供了默认实现DefaultRoleService,主要实现逻辑为获取当前用户信息,通过用户的实体类UserBo的isAdmin属性来判断是否为系统管理员,UserBo的isAdmin中的值设定则根据配置文件中设置的radar.admin.username=***
来判别。根据应用的owner和member来判断是否为应用管理员。
2. 用户登录
2.1. 登录原理
为了实现用户登录和权限控制,用户需要实现自己的用户系统,radar中内置了一个基于ldap域控的用户模块,用户也可以自己实现自己的用户模块,具体请参考下面章节。
2.2. 自定义用户
如果用户想接入自己的用户系统,只需要实现UserService接口即可,该接口主要有以下四个方法:
- boolean login(String userName, String passWord);//验证用户名密码是否正确
- Map<String, UserBo> getUsers();//获取所有用户,key值为userId
- Map<String, OrganizationBo> getOrgs();//获取所有部门,key值为orgId
- UserBo getCurrentUser();//获取当前登录的用户信息`
在radar-dependency-ui
模块内,提供了缺省的默认实现类LdapUserService,接入方式为公司的统一认证系统LDAP,通过域账号即可登录。
如果公司内部有域控系统,则很容易接入。只需要在配置文件中配置LDAP服务器地址,以及搜索路径、以及访问LDAP的用户名和密码即可。
- ADServer=*** #ldap 域控地址
- SearchBase=*** #ldap 域控搜索路径 以
|
隔开 - radar.ldapUser=*** #访问ldap的用户名
- radar.ldapPass=*** #访问ldap的用户名密码