openapi - OpenAPI 将路径限制为“管理员”用户
问题描述
在 OpenAPI 中,如何将给定的操作(例如)限制为GET /users
具有特定角色(例如admin
)的用户?
例如,用户列表应该只能由用户访问admin
:
paths:
/users:
get:
# TODO: restrict access to users with 'admin' role
summary: Get list of all users
security:
- BearerAuth: []
operationId: getUsers
responses:
200:
description: successful operation
content:
application/json:
schema:
type: object
properties:
users:
type: array
items:
$ref: '#/components/schemas/User'
解决方案
Bearer Authorization 不支持 OpenAPI 定义的访问范围。你有几个选择:
使用描述
使用 adescription
向您的定义的读者解释这些端点需要属于管理员用户的身份验证令牌。这是最简单的解决方案,尽管这不允许工具从您的 OpenAPI 规范中自动强制执行此标准,因此您需要在自己的代码中手动控制它。
get:
description: Get list of all users. Limited to admin users.
使用扩展
编写一个扩展来正式描述您的身份验证令牌所需的标准。OpenAPI 允许使用额外的属性来定义不适合一般情况的特定于您的实现的属性和行为。您可以编写工具和脚本来处理此属性,以强制执行您认为合适的行为。
get:
x-authRoles: ['admin']
使用 OAuth 2.0
使用 OAuth 2.0 或其他设计支持访问范围的安全方案。您可能会发现这增加了额外的安全优势,因为围绕 OAuth 的所有工具都已经期望访问范围,因此您可能会更轻松地解决这个特定问题,因为您不必滚动自己的实现。
get:
security:
- oAuthSample:
- admin
推荐阅读
- laravel - 在验证之前运行方法之后的 Laravel 验证器
- google-apps-script - 在 Google 电子表格中获取所有开发者元数据
- python - 我正在尝试学习如何从另一个文件(我制作的)导入和使用一个类。为什么我的输出没有显示 7?
- python - 是否可以创建一个要在 android 手机中运行的 python 脚本来自动执行某些任务?
- linux - CentOS7 中的 VPS,在启动我的 vps 时运行 Files JAVA
- apache-pig - 替换空值在猪中不起作用
- excel - 用于 if -then- else 语句的 VBA
- jenkins - Jenkins管道脚本变量被覆盖?
- python - 如何仅从 CSV 文件的树视图中读取新值?
- java - 以编程方式检索 Spring FeignClient 调用的 URL