5.2. 使用 Red Hat Single Sign-On 配置 Apicurio Registry 身份验证和授权
本节介绍如何为 Apicurio Registry 和 Red Hat Single Sign-On 手动配置身份验证和授权选项。
或者,有关如何自动配置这些设置的详情,请参考 第 5.1 节 “使用 Red Hat Single Sign-On Operator 保护 Apicurio Registry”。
Apicurio Registry web 控制台和核心 REST API 支持基于 OAuth 和 OpenID Connect (OIDC)的 Red Hat Single Sign-On 中的身份验证。相同的 Red Hat Single Sign-On 域和用户在使用 OpenID Connect 的 Apicurio Registry web 控制台和核心 REST API 中联邦,以便您只需要一组凭证。
Apicurio Registry 为默认的 admin、write 和 read-only 用户角色提供基于角色的授权。Apicurio Registry 在 schema 或 API 级别上提供基于内容的授权,只有 registry 工件的创建者可以更新或删除它。Apicurio Registry 身份验证和授权设置默认为禁用。
前提条件
- Red Hat Single Sign-On 已安装并运行。如需了解更多详细信息,请参阅 Red Hat Single Sign-On 用户文档。
- Apicurio Registry 已安装并运行。
流程
-
在 Red Hat Single Sign-On Admin 控制台中,为 Apicurio Registry 创建一个 Red Hat Single Sign-On 域。默认情况下,Apicurio Registry 需要
registry
的域名。有关创建域的详情,请查看 Red Hat Single Sign-On 用户文档。 为 Apicurio Registry API 创建 Red Hat Single Sign-On 客户端。默认情况下,Apicurio Registry 需要以下设置:
-
客户端 ID :
registry-api
-
客户端协议 :
openid-connect
访问类型:
bearer-only
您可以将默认值用于其他客户端设置。
注意如果您使用 Red Hat Single Sign-On 服务帐户,客户端的 Access Type 必须是
confidential
而不是bearer-only
。
-
客户端 ID :
为 Apicurio Registry web 控制台创建 Red Hat Single Sign-On 客户端。默认情况下,Apicurio Registry 需要以下设置:
-
客户端 ID:
apicurio-registry
-
客户端协议 :
openid-connect
-
访问类型 :
public
-
有效的重定向 URL:
http://my-registry-url:8080/*
Web Origins:
+
您可以将默认值用于其他客户端设置。
-
客户端 ID:
在 OpenShift 上的 Apicurio Registry 部署中,设置以下 Apicurio Registry 环境变量以使用 Red Hat Single Sign-On 配置身份验证:
表 5.2. 使用 Red Hat Single Sign-On 配置 Apicurio Registry 身份验证 环境变量 描述 类型 默认 AUTH_ENABLED
为 Apicurio Registry 启用身份验证。当设置为
true
时,需要使用 Red Hat Single Sign-On 进行身份验证所需的环境变量。字符串
false
KEYCLOAK_URL
Red Hat Single Sign-On 身份验证服务器的 URL。例如:
http://localhost:8080
。字符串
-
KEYCLOAK_REALM
用于身份验证的 Red Hat Single Sign-On 域。例如,
registry。
字符串
-
KEYCLOAK_API_CLIENT_ID
Apicurio Registry REST API 的客户端 ID。
字符串
registry-api
KEYCLOAK_UI_CLIENT_ID
Apicurio Registry web 控制台的客户端 ID。
字符串
apicurio-registry
提示有关在 OpenShift 中设置环境变量的示例,请参阅 第 6.1 节 “在 OpenShift 中配置 Apicurio Registry 健康检查”。
将以下选项设置为
true
在 Red Hat Single Sign-On 中启用 Apicurio Registry 用户角色:表 5.3. 配置 Apicurio Registry 基于角色的授权 环境变量 Java 系统属性 类型 默认值 ROLE_BASED_AUTHZ_ENABLED
registry.auth.role-based-authorization
布尔值
false
启用 Apicurio Registry 用户角色时,您必须将 Apicurio Registry 用户至少分配给 Red Hat Single Sign-On 域中的以下默认用户角色之一:
表 5.4. 用于 registry 身份验证和授权的默认用户角色 角色 读取工件 写入工件 全局规则 概述 sr-admin
是
是
是
所有创建、读取、更新和删除操作的完整访问权限。
sr-developer
是
是
否
除配置全局规则外,创建、读取、更新和删除操作的访问权限。此角色可配置特定于工件的规则。
sr-readonly
是
否
否
仅访问读和搜索操作。此角色无法配置任何规则。
将以下内容设置为
true
,为 Apicurio Registry 中的 schema 和 API 工件启用仅所有者授权:表 5.5. 配置仅限所有者授权 环境变量 Java 系统属性 类型 默认值 REGISTRY_AUTH_OBAC_ENABLED
registry.auth.owner-only-authorization
布尔值
false
其他资源
- 有关配置非默认用户角色名称的详情,请参考 第 5.4 节 “Apicurio Registry 身份验证和授权配置选项”。
- 有关开源示例应用程序和 Keycloak 域,请参阅使用 Keycloak 的 Apicurio Registry 的 Docker Compose 示例。
- 有关如何在生产环境中使用 Red Hat Single Sign-On 的详情,请查看 Red Hat Single Sign-On 文档。