你可以使用一个 admission 扩展在你的 Drone 实例上应用自定义访问控制逻辑。例如,我们创建了一个 admission 扩展参考,它根据组织和团队成员资格授予系统访问权限。
扩展配置
你可以通过向 Drone 服务器提供以下配置参数来注册一个 admission 扩展:
-
DRONE_ADMISSION_PLUGIN_ENDPOINT
- 提供用于向 admission 扩展发起 HTTP 请求的端点(endpoint)。
-
DRONE_ADMISSION_PLUGIN_SECRET
- 提供用于对 admission 扩展的 HTTP 请求进行身份验证的令牌。这个令牌是 Drone Server 和扩展之间共享的。
扩展工作原理
在登录流程中,Drone Server 向 admission 扩展发起 HTTP POST 请求。预期 admission 扩展将授予或拒绝用户对系统的访问权限,并且还可以(可选地)授予用户对系统的管理访问权限。
扩展请求响应
Admission 扩展将接收一个 HTTP 请求以授权用户。请求正文以 JSON 格式包含用户详细信息和事件类型。事件类型区分现有用户登录和新用户注册。
以下是请求体的定义:
|
|
|
|
|
|
以下是请求正文的示例:
|
|
扩展请求响应
Admission 扩展应该以以下一种方式之一进行响应:
返回 403
响应代码,表示用户未被授权登录。
返回 204
响应代码,表示用户已被授予访问权限。
返回 200
响应代码,并带有一个 JSON 编码的用户对象,以授予用户访问权限并授予或撤销管理特权。
以下是响应体的定义:
|
|
以下是响应正文的示例:
|
|
扩展请求鉴权
HTTP 请求根据 HTTP 签名规范草案使用共享 Secret 进行签名。请求接收者应该使用签名来验证 WebHook 的真实性和完整性。
起始项目 (模板)
如果你有兴趣创建一个 Admission 扩展,我们建议使用我们的起始项目模板作为基础来启动开发。