如何通过REST API验证ServiceNow实例中用户对指定表的访问权限
用ServiceNow REST API验证用户表访问权限
一、通用步骤:判断用户对特定表的访问权限
1. 认证方式
请求时需携带认证信息,推荐使用Basic认证:
- 将用户名和密码用冒号拼接后做Base64编码,在请求头中添加:
Authorization: Basic <Base64编码的用户名:密码>
2. 调用权限检查API
使用ServiceNow的access/table接口直接查询用户对目标表的CRUD权限:
- 请求方法:
GET - 接口地址:
/api/now/access/table/{tableName} - 路径参数:
tableName:目标表的名称(如os_list、cmdb_ci_computer)
- 查询参数(可选,用于检查指定用户而非当前认证用户):
sysparm_user:指定用户的sys_id或用户名,用于模拟该用户的权限检查
3. 解析响应结果
响应体中会返回该用户对目标表的各项权限状态,示例响应片段:
{ "result": { "read": true, "write": false, "create": false, "delete": false, "import": false, "export": true } }
- 字段说明:
read:是否拥有读权限write:是否拥有编辑权限create:是否拥有新建权限delete:是否拥有删除权限
二、验证指定用户对三个表的权限
注意:ServiceNow表名通常为小写格式,Core_manufacturer实际应为core_manufacturer,CMDB_cI_Computers实际应为cmdb_ci_computer,以下按规范表名操作:
1. 单表验证请求
分别调用三次API,替换tableName为对应表名,并添加sysparm_user参数指定目标用户:
- 检查
os_list:GET /api/now/access/table/os_list?sysparm_user=<目标用户sys_id或用户名> - 检查
core_manufacturer:GET /api/now/access/table/core_manufacturer?sysparm_user=<目标用户sys_id或用户名> - 检查
cmdb_ci_computer:GET /api/now/access/table/cmdb_ci_computer?sysparm_user=<目标用户sys_id或用户名>
2. 批量验证(可选)
如果需要减少网络请求次数,可使用批量请求API(/api/now/batch)打包三个请求:
{ "batch": [ { "method": "GET", "url": "/api/now/access/table/os_list?sysparm_user=<目标用户sys_id或用户名>" }, { "method": "GET", "url": "/api/now/access/table/core_manufacturer?sysparm_user=<目标用户sys_id或用户名>" }, { "method": "GET", "url": "/api/now/access/table/cmdb_ci_computer?sysparm_user=<目标用户sys_id或用户名>" } ] }
3. 结果判断
以响应中read字段的true/false为基础,判断用户是否拥有对应表的基础访问权限;若需验证编辑、新建等权限,直接对应响应中的write、create等字段值即可。
内容的提问来源于stack exchange,提问作者user2745292
相关产品推荐
相关产品推荐

