API 资源
概述
API 资源模块用于定义平台中受保护的 API 资源。每个 API 资源通过唯一的 Indicator URL 标识,并可以包含多个权限范围(Scope)。应用在请求访问令牌时,通过指定资源和范围来获取对应的权限。
导航路径: 侧边栏 -> API 资源
核心概念
- API 资源(Resource): 代表一个受保护的 API 服务,通过 Indicator URL 唯一标识。
- 权限范围(Scope): 定义在资源上的细粒度权限,用于控制对资源的具体操作权限。
- Access Token TTL: 针对该资源签发的访问令牌的有效期。
资源列表
资源列表页面展示所有已定义的 API 资源。
列表字段
| 字段 | 说明 |
|---|---|
| 名称 | 资源的显示名称 |
| Indicator | 资源的唯一标识 URL(如 https://api.example.com) |
| 默认资源 | 是否为系统默认资源 |
| Access Token TTL | 访问令牌有效期(秒) |
| 权限范围数量 | 该资源下定义的权限范围数量 |
| 创建时间 | 资源创建时间 |
搜索与筛选
- 关键词搜索 (
search): 模糊匹配 - 名称 (
name): 精确匹配 - Indicator (
indicator): 精确匹配 - 资源 ID (
id): 精确匹配
创建资源
点击 "新建资源" 按钮进入创建页面。
导航路径: API 资源 -> 新建资源
创建参数
| 字段 | 必填 | 说明 |
|---|---|---|
| 名称 | 是 | 资源的显示名称 |
| Indicator | 是 | 资源的唯一标识 URL |
API 调用:
POST /api/v1/resources请求示例:
json
{
"name": "订单 API",
"indicator": "https://api.example.com/orders"
}编辑资源
在资源列表中点击资源名称或编辑按钮,进入资源编辑页面。
导航路径: API 资源 -> 编辑资源
可编辑字段
| 字段 | 说明 |
|---|---|
| 名称 | 资源的显示名称 |
| Access Token TTL | 针对该资源签发的访问令牌有效期(秒) |
API 调用:
PATCH /api/v1/resources/:id请求示例:
json
{
"name": "订单 API v2",
"access_token_ttl": 7200
}权限范围(Scope)管理
每个 API 资源可以定义多个权限范围,用于细粒度的权限控制。
查看权限范围
在资源编辑页面中查看该资源的所有权限范围。
API 调用:
GET /api/v1/resources/:id/scopes创建权限范围
为资源添加新的权限范围。
| 字段 | 必填 | 说明 |
|---|---|---|
| 名称 | 是 | 权限范围名称(如 read:orders、write:orders) |
| 描述 | 否 | 权限范围的说明 |
API 调用:
POST /api/v1/resources/:id/scopes请求示例:
json
{
"name": "read:orders",
"description": "读取订单数据"
}删除权限范围
删除资源的某个权限范围。删除后,已分配该权限范围的角色将失去此权限。
API 调用:
DELETE /api/v1/resources/:resourceId/scopes/:scopeId删除资源
删除 API 资源将同时删除其下所有权限范围。此操作不可逆。
API 调用:
DELETE /api/v1/resources/:id注意: 删除资源前,请确认没有角色仍在引用该资源的权限范围。
使用场景示例
定义微服务 API 资源
假设系统包含订单服务和用户服务:
- 创建资源 "订单 API",Indicator 为
https://api.example.com/orders - 为订单 API 添加权限范围:
read:orders、write:orders、delete:orders - 创建资源 "用户 API",Indicator 为
https://api.example.com/users - 为用户 API 添加权限范围:
read:users、manage:users - 在角色管理中将对应的权限范围分配给不同角色
