10.4. Docker registry v2 身份验证
Docker 身份验证默认为禁用。要启用 docker 身份验证,请查看 配置集。
Docker Registry V2 身份验证 是一个与 OIDC 类似,用于针对 Docker registry 验证用户的协议。红帽单点登录实现此协议可让 Docker 客户端使用 Red Hat Single Sign-On 身份验证服务器与注册表进行身份验证。这个协议使用标准令牌和签名机制,但它与真正的 OIDC 实现不同。它通过对请求和响应使用非常具体的 JSON 格式,并将存储库名称和权限映射到 OAuth 范围机制。
10.4.1. Docker 身份验证流程 复制链接链接已复制到粘贴板!
Docker API 文档 中介绍了身份验证流程。以下是 Red Hat Single Sign-On 身份验证服务器摘要:
-
执行 Docker
登录
。 - Docker 客户端从 Docker 注册表请求资源。如果资源受到保护,且没有在请求中,Docker 注册表服务器使用 401 HTTP 消息响应 401 HTTP 消息,其中包含一些有关所需权限的信息以及授权服务器的位置。
-
Docker 客户端根据 Docker 注册表中的 401 HTTP 消息构建身份验证请求。客户端使用本地缓存的凭据(从
docker login
命令)作为发送到 Red Hat Single Sign-On 身份验证服务器的 HTTP 基本身份验证 请求的一部分。 - Red Hat Single Sign-On 身份验证服务器会尝试验证用户,并返回包含 OAuth 风格的 Bearer 令牌的 JSON 正文。
- Docker 客户端从 JSON 响应中收到 bearer 令牌,并在授权标头中使用它请求受保护的资源。
- Docker 注册表从 Red Hat Single Sign-On 服务器获取受保护资源的新请求。registry 验证令牌并授予对请求资源的访问权限(如果适用)。
在成功使用 Docker 协议进行身份验证后,Red Hat Single Sign-On 不会创建浏览器 SSO 会话。浏览器 SSO 会话不使用 Docker 协议,因为它无法刷新令牌或从 Red Hat Single Sign-On 服务器获取令牌或会话状态,因此不需要浏览器 SSO 会话。如需了解更多详细信息,请参阅 临时会话 部分。
Red Hat Single Sign-On 对所有 Docker auth v2 请求都有一个端点。
http(s)://authserver.host/auth/realms/{realm-name}/protocol/docker-v2