10.4. Docker registry v2 身份验证


注意

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

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

10.4.1. Docker 身份验证流

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

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

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

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

红帽构建的 Keycloak 为所有 Docker auth v2 请求都有一个端点。

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

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.