10.4. Docker Registry v2 認証
Docker 認証はデフォルトで無効になっています。docker 認証を有効にするには、プロファイル を参照してください。
Docker レジストリー V2 認証 は OIDC と同様に、Docker レジストリーに対してユーザーを認証します。このプロトコルの Red Hat Single Sign-On の実装により、Docker クライアントは Red Hat Single Sign-On 認証サーバーをレジストリーに対して認証できるようにします。このプロトコルは標準のトークンと署名メカニズムを使用しますが、実際の OIDC 実装とは異なります。要求と応答に非常に特殊な JSON 形式を使用し、リポジトリー名とパーミッションを OAuth スコープメカニズムにマッピングすることで、非常に特殊な JSON 形式を使用します。
10.4.1. Docker 認証フロー
認証フローについては、Docker API のドキュメント で説明されています。以下は、Red Hat Single Sign-On 認証サーバーの視点の概要です。
-
docker login
を実行します。 - Docker クライアントは Docker レジストリーからリソースを要求します。リソースが保護されていて、要求に認証トークンがない場合には、Docker レジストリーサーバーは、必要なパーミッションに関する情報と認可サーバーの場所を示す 401 HTTP メッセージを返します。
-
Docker クライアントは、Docker レジストリーから 401 HTTP メッセージに基づいて認証要求を作成します。クライアントは、Red Hat Single Sign-On 認証サーバーへの HTTP Basic 認証 要求の一部として、(
docker login
コマンドからの) ローカルにキャッシュされた認証情報を使用します。 - Red Hat Single Sign-On 認証サーバーは、ユーザーの認証を試みます。また、OAuth スタイルの Bearer トークンが含まれる JSON ボディーを返します。
- Docker クライアントは JSON 応答から Bearer トークンを受け取り、これを Authorization ヘッダーで使用し、保護されているリソースを要求します。
- Docker レジストリーは、Red Hat Single Sign-On サーバーからトークンを使用して保護されたリソースに対する新しい要求を受信します。レジストリーはトークンを検証し、要求されたリソースへのアクセスを付与します (該当する場合)。
Red Hat Single Sign-On は、Docker プロトコルで認証に成功した後に、ブラウザーの SSO セッションは作成されません。ブラウザーの SSO セッションは、トークンを更新したり、Red Hat Single Sign-On サーバーからトークンまたはセッションのステータスを取得したりできないため、Docker プロトコルは使用されません。詳細については、一時的なセッション セクションを参照してください。
10.4.2. Red Hat Single Sign-On Docker Registry v2 Authentication Server URI Endpoints
Red Hat Single Sign-On には、すべての Docker auth v2 要求に対してエンドポイントは 1 つです。
http(s)://authserver.host/auth/realms/{realm-name}/protocol/docker-v2