在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'
发布于 2021-02-25 03:34:38
不记名授权不支持OpenAPI定义的访问范围。您有几个选项:
使用description
向您定义的读者解释这些终结点需要属于管理员用户的身份验证令牌。这是最简单的解决方案,尽管这不允许工具从您的OpenAPI规范中自动强制执行此条件,因此您需要在自己的代码中手动控制这一点。
get:
description: Get list of all users. Limited to admin users.
编写一个扩展来正式描述身份验证令牌所需的条件。OpenAPI允许使用额外的属性来定义特定于您的实现的、不适合一般情况的属性和行为。您可以编写工具和脚本来处理此属性,以执行您认为合适的行为。
get:
x-authRoles: ['admin']
使用OAuth 2.0或其他设计上支持访问范围的安全方案。您可能会发现这增加了额外的安全好处,因为OAuth周围的所有工具都已经期望访问作用域,因此您可能会更容易处理这个特定的问题,因为您不必执行自己的实现。
get:
security:
- oAuthSample:
- admin
https://stackoverflow.com/questions/66303453
复制