7.2.2 授权管理
授权即访问控制,它将判断用户对资源是否拥有相应的访问权限。例如,判断一个用户有查看页面的权限,编辑数据的权限,以及拥有某一按钮的权限等。
授权有着三个核心元素:权限、角色和用户。权限是安全机制最核心的元素。它明确声明了被允许的行为和表现。一个格式良好的权限声明可以清晰表达出用户对该资源拥有的权限。大多数的资源会支持典型的CRUD操作(create、read、update、delete),但是任何操作建立在特定的资源上才是有意义的。因此,权限声明的根本思想就是建立在资源以及操作上。
通过权限声明仅仅能了解这个权限可以做些什么,而不能确定谁拥有此权限。于是,就需要对用户和权限建立关联。通常的做法就是将权限分配给某个角色,然后将这个角色关联一个或多个用户。
权限声明通常是使用以冒号分隔的表达式。一个权限表达式可以清晰的指定资源类型,允许的操作,可访问的数据。同时,权限表达式支持简单的通配符,可以更加灵活的进行权限设置。表7-1中以示例来说明权限表达式。
表7-1 权限描述及表达式
权限描述 |
权限表达式 |
全部权限 |
*:*:* |
全部数据权限 |
*:/dbrest:* |
某个数据集全部权限 |
*:/dbrest/main_shangpin:* |
某个数据集查询权限 |
*:/dbrest/main_shangpin:get |
全部服务权限 |
*:/main:* |
某个服务权限 |
*:/main/wodifw:* |
某个请求权限 |
*:/main/wodifw/jiarugwj:get |
可以看出权限表达式是三段的,三段的含义分别为域名、路径和操作。其中*是通配符。从市场下载权限组件后,才能进行授权管理。调用请求时,如果没有相应的权限,则控制台报出401的错误。
1、下载权限组件
在制作台中,从市场下载“权限组件”,如图7-4所示。
图7-4 下载权限组件
下载“权限组件”后,在管理后台中就会显示出“授权管理”菜单,里面包括“权限管理”、“角色管理”和“按组织授权”3个功能,如图7-5所示。
图7-5 授权管理菜单
授权管理的过程如下:
l 在权限管理中声明权限
l 在角色管理中给角色分配权限
l 在按组织授权中给人员分配角色
2、权限管理
系统中的权限分为访问数据的权限、调用服务的权限和管理后台的功能权限。在“权限管理”功能中声明哪些资源是需要鉴权的,不需要鉴权的资源可以直接访问,需要鉴权的资源在获得权限后,才能访问。这其中管理后台的功能权限已默认为需要鉴权的资源。
l 声明数据资源:添加那些需要分配权限才能访问的数据集
l 声明服务资源:添加那些需要分配权限才能访问的服务
l 声明自定义:自定义资源编码,例如:添加“/dbrest/”可以将所有数据集设置为需要鉴权的资源
3、角色管理
系统默认设置3个角色“匿名用户”、“注册用户”、“管理员”,还可以添加其它角色。
l 匿名用户:在小程序中仅登录,而未注册UAA的用户,都是匿名用户
l 注册用户:在小程序中登录且注册UAA的用户,是注册用户,目前未实现自动注册
l 管理员:默认用户SYSTEM是管理员
角色是权限的集合,每个权限包括:权限名称、权限表达式、授权范围和权限描述等4个信息。
l 权限名称:根据功能名、数据集名、服务名自动生成
l 权限表达式:由域名、路径和操作组成的三段表达式,*为通配符
l 授权范围:目前暂不支持
l 权限描述:权限说明
选择一个角色,为角色分配权限,权限有4种,分别是功能权限、数据权限、服务权限和自定义权限。
l 功能权限:指管理后台功能树上每个功能的访问权限
l 数据权限:指访问数据制作区中动态数据集的权限,数据权限包括查询、修改、删除,也可以设置为全部权限
l 服务权限:指调用服务制作区中服务请求的权限
l 自定义权限:自定义权限名称和权限表达式。例如:自定义权限*:/dbrest:*,表示可访问全部数据集的全部数据权限,自定义权限*:/main:*,表示可访问全部服务请求
3、按组织授权
按组织授权是给群组和用户分配角色,使得群组和用户拥有角色中的权限。