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