Menu Close

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 プロトコルは使用されません。詳細は「一時的なセッション」を参照してください。