5.4. Apicurio Registry 身份验证和授权配置选项
Apicurio Registry 为带有红帽单点登录和 HTTP 基本身份验证的 OpenID Connect 提供身份验证选项。
Apicurio Registry 为基于角色的和基于内容的方法提供授权选项:
- 默认 admin、write 和 read-only 用户角色基于角色的授权。
- 基于内容或 API 工件的授权,只有工件或工件组的所有者才能更新或删除工件。
Apicurio Registry 中的所有身份验证和授权选项都默认禁用。在启用任何这些选项前,您必须首先将 AUTH_ENABLED 选项设置为 true。
本章详细介绍了以下配置选项:
在 Red Hat Single Sign-On 中使用 OpenID Connect 进行 Apicurio Registry 身份验证
您可以设置以下环境变量,以使用 Red Hat Single Sign-On 为 Apicurio Registry web 控制台和 API 配置身份验证:
| 环境变量 | 描述 | 类型 | 默认 |
|---|---|---|---|
|
|
为 Apicurio Registry 启用身份验证。当设置为 | 字符串 |
|
|
|
Red Hat Single Sign-On 身份验证服务器的 URL。例如: | 字符串 | - |
|
|
Red Hat Single Sign-On 域用于身份验证。例如, | 字符串 | - |
|
| Apicurio Registry REST API 的客户端 ID。 | 字符串 |
|
|
| Apicurio Registry web 控制台的客户端 ID。 | 字符串 |
|
使用 HTTP 基本身份验证的 Apicurio Registry 身份验证
默认情况下,Apicurio Registry 支持使用 OpenID Connect 进行身份验证。用户或 API 客户端必须获取访问令牌,才能向 Apicurio Registry REST API 发出经过身份验证的调用。但是,由于某些工具不支持 OpenID Connect,您也可以将 Apicurio Registry 配置为支持 HTTP 基本身份验证,方法是将以下配置选项设置为 true :
| 环境变量 | Java 系统属性 | 类型 | 默认值 |
|---|---|---|---|
|
|
| 布尔值 |
|
|
|
| 布尔值 |
|
Apicurio Registry HTTP 基本客户端凭证缓存到期
您还可以配置 HTTP 基本客户端凭证缓存过期时间。默认情况下,在使用 HTTP 基本身份验证时,Apicurio Registry 会缓存 JWT 令牌,且不需要时不会发出新令牌。您可以为 JWT 令牌配置缓存到期时间,该令牌默认设置为 10 分钟。
使用红帽单点登录时,最好将此配置设置为您的 Red Hat Single Sign-On JWT 到期时间减一分钟。例如,如果您在 Red Hat Single Sign-On 中将过期时间设置为 5 分钟,您应该将以下配置选项设置为 4 分钟:
| 环境变量 | Java 系统属性 | 类型 | 默认值 |
|---|---|---|---|
|
|
| 整数 |
|
Apicurio Registry 基于角色的授权
您可以将以下选项设置为 true,以便在 Apicurio Registry 中启用基于角色的访问控制:
| 环境变量 | Java 系统属性 | 类型 | 默认值 |
|---|---|---|---|
|
|
| 布尔值 |
|
|
|
| 布尔值 |
|
然后,您可以将基于角色的访问控制配置为使用用户身份验证令牌中包含的角色(例如,使用 Red Hat Single Sign-On 进行身份验证时),或者使用 Apicurio Registry 内部管理的角色映射。
使用在 Red Hat Single Sign-On 中分配的角色
要启用使用由 Red Hat Single Sign-On 分配的角色,请设置以下环境变量:
| 环境变量 | 描述 | 类型 | 默认 |
|---|---|---|---|
|
|
当设置为 | 字符串 |
|
|
| 指明用户的角色名称是管理员。 | 字符串 |
|
|
| 指明用户的角色的名称是开发人员。 | 字符串 |
|
|
| 表示用户具有只读访问权限的角色名称。 | 字符串 |
|
当 Apicurio Registry 配置为使用 Red Hat Single Sign-On 中的角色时,您必须将 Apicurio Registry 用户分配给 Red Hat Single Sign-On 中至少以下用户角色之一。但是,您可以使用 表 5.12 “使用红帽单点登录配置 Apicurio Registry 基于角色的授权” 中的环境变量配置不同的用户角色名称。
| 角色名称 | 读取工件 | 编写工件 | 全局规则 | 描述 |
|---|---|---|---|---|
|
| 是 | 是 | 是 | 完全访问所有创建、读取、更新和删除操作。 |
|
| 是 | 是 | 否 | 除了配置全局规则和导入/导出外,访问创建、读取、更新和删除操作。此角色只能配置特定于工件的规则。 |
|
| 是 | 否 | 否 | 只能访问读取和搜索操作。此角色无法配置任何规则。 |
直接管理 Apicurio Registry 中的角色
要使用 Apicurio Registry 内部管理的角色启用,请设置以下环境变量:
| 环境变量 | 描述 | 类型 | 默认 |
|---|---|---|---|
|
|
当设置为 | 字符串 |
|
使用内部管理的角色映射时,可以使用 Apicurio Registry REST API 中的 /admin/roleMappings 端点来为用户分配角色。如需了解更多详细信息,请参阅 Apicurio Registry REST API 文档。
用户可以精确授予一个角色: ADMIN、DEVELOPER 或 READ_ONLY。只有具有管理特权的用户才能授予其他用户的访问权限。
Apicurio Registry admin-override 配置
因为 Apicurio Registry 中没有默认的 admin 用户,因此用户通常有助于将用户识别为 admins。您可以使用以下环境变量配置此 admin-override 功能:
| 环境变量 | 描述 | 类型 | 默认 |
|---|---|---|---|
|
| 启用 admin-override 功能。 | 字符串 |
|
|
|
在何处查找 admin-override 信息。目前只支持 | 字符串 |
|
|
|
用于确定用户是否为管理员的信息类型。值取决于 FROM 变量的值,如 | 字符串 |
|
|
| 指明用户的角色名称是管理员。 | 字符串 |
|
|
| 用于确定 admin-override 的 JWT 令牌声明的名称。 | 字符串 |
|
|
| CLAIM 变量指示的 JWT 令牌声明的值必须是该用户被授予 admin-override。 | 字符串 |
|
例如,您可以使用此 admin-override 功能将 sr-admin 角色分配给 Red Hat Single Sign-On 中的单个用户,这将授予该用户 admin 角色。然后,用户可以使用 /admin/roleMappings REST API (或关联的 UI)为其他用户(包括其他 admins)授予角色。
Apicurio Registry 仅限所有者授权
您可以将以下选项设置为 true,以启用仅所有者授权来更新 Apicurio Registry 中的工件或工件组:
| 环境变量 | Java 系统属性 | 类型 | 默认值 |
|---|---|---|---|
|
|
| 布尔值 |
|
|
|
| 布尔值 |
|
|
|
| 布尔值 |
|
当启用了仅限所有者授权时,只有创建工件的用户才能修改或删除该工件。
当只所有者授权和仅组所有者授权都启用时,只有创建工件组的用户只能对该工件组具有写入访问权限,例如在该组中添加或删除工件。
Apicurio Registry 验证的读访问权限
启用身份验证的 read access 选项时,Apicurio Registry 至少授予对同一机构中任何经过身份验证的用户的只读访问权限,而不考虑其用户角色。
要启用经过身份验证的读取访问权限,您必须首先启用基于角色的访问控制,然后确保将以下选项设置为 true :
| 环境变量 | Java 系统属性 | 类型 | 默认值 |
|---|---|---|---|
|
|
| 布尔值 |
|
|
|
| 布尔值 |
|
如需了解更多详细信息,请参阅 “Apicurio Registry 基于角色的授权”一节。
Apicurio Registry 匿名只读访问
除了两种主要授权类型(基于角色的和基于所有者的授权)外,Apicurio Registry 还支持匿名只读访问选项。
要允许匿名用户(如没有身份验证凭证的 REST API 调用)对 REST API 进行只读调用,请将以下选项设置为 true :
| 环境变量 | Java 系统属性 | 类型 | 默认值 |
|---|---|---|---|
|
|
| 布尔值 |
|
|
|
| 布尔值 |
|