搜索

10.4. Docker registry v2 身份验证

download PDF
注意

Docker 身份验证默认为禁用。要启用 docker 身份验证,请参阅 启用和禁用功能 章节。

Docker Registry V2 身份验证 是与 OIDC 类似的协议,它针对 Docker registry 验证用户。红帽构建的 Keycloak 实施允许 Docker 客户端使用红帽构建的 Keycloak 身份验证服务器与 registry 进行身份验证。这个协议使用标准令牌和签名机制,但它与真正的 OIDC 实现分离。它通过对请求和响应使用非常具体的 JSON 格式,并将存储库名称和权限映射到 OAuth 范围机制来分离。

10.4.1. Docker 身份验证流程

身份验证流程在 Docker API 文档 中进行了描述。以下是红帽构建的 Keycloak 身份验证服务器的视角概述:

  • 执行 Docker 登录
  • Docker 客户端从 Docker 注册表请求资源。如果资源受保护且没有请求中的身份验证令牌,Docker 注册表服务器会以 401 HTTP 消息响应,其中包含有关所需权限和授权服务器位置的信息。
  • Docker 客户端基于 Docker 注册表中的 401 HTTP 消息构造身份验证请求。客户端使用本地缓存的凭证(来自 docker login 命令),作为红帽构建的 Keycloak 身份验证服务器的一部分。https://datatracker.ietf.org/doc/html/rfc2617
  • 红帽构建的 Keycloak 身份验证服务器会尝试验证用户并返回包含 OAuth 样式 Bearer 令牌的 JSON 正文。
  • Docker 客户端从 JSON 响应接收 bearer 令牌,并在授权标头中使用它请求受保护的资源。
  • Docker registry 收到带有来自红帽构建的 Keycloak 服务器令牌的新请求。registry 验证令牌,并授予对请求资源的访问权限(如果适用)。
注意

红帽构建的 Keycloak 在通过 Docker 协议成功进行身份验证后不会创建浏览器 SSO 会话。浏览器 SSO 会话不使用 Docker 协议,因为它无法刷新令牌或从红帽构建的 Keycloak 服务器获取令牌或会话的状态;因此不需要浏览器 SSO 会话。如需了解更多详细信息,请参阅 临时会话 部分。

10.4.2. Red Hat build of Keycloak Docker Registry v2 Authentication Server URI Endpoints

红帽构建的 Keycloak 为所有 Docker 身份验证 v2 请求有一个端点。

http(s)://authserver.host/realms/{realm-name}/protocol/docker-v2

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.