7.4. Docker Registry v2 認証

注記

Docker 認証はデフォルトで無効になっています。有効にするには、「プロファイル」を参照してください。

Docker レジストリー V2 認証は、Docker レジストリーに対してユーザーを認証するために使用される OIDC-Like プロトコルです。Red Hat Single Sign-On のこのプロトコルにより、Docker クライアントによって使用される Red Hat Single Sign-On 認証サーバーに対してレジストリーに対して認証を行うことができます。このプロトコルはかなりの標準的なトークンと署名メカニズムを使用しますが、それが真の OIDC 実装として処理されないようにすることを防ぐ欠点があります。最高の相違には、要求および応答用に非常に具体的な JSON 形式が含まれており、リポジトリー名とパーミッションを OAuth スコープメカニズムにマッピングする方法を理解することができます。

7.4.1. Docker 認証フロー

Docker API ドキュメントの概要は、このプロセスについて説明していますが、Red Hat Single Sign-On 認証サーバーの視点では、簡単な概要が提供されます。

注記

このフローは、docker login コマンドがすでに実行されていることを前提としています。

  • このフローは、Docker クライアントが Docker レジストリーからリソースを要求すると開始します。リソースが保護され、要求に認証トークンがない場合、Docker レジストリーサーバーは 401 と必要なパーミッションと認可サーバーの一部の情報でクライアントに応答します。
  • Docker クライアントは Docker レジストリーからの 401 応答に基づいて認証要求を作成します。その後、クライアントは Red Hat Single Sign-On 認証サーバーへの HTTP Basic Authentication 要求の一部として、ローカルでキャッシュされた認証情報 (docker login コマンドから) を使用します。
  • Red Hat Single Sign-On 認証サーバーは、ユーザーの認証を試みます。また、OAuth スタイルの Bearer トークンが含まれる JSON ボディーを返します。
  • Docker クライアントは JSON 応答からベアラートークンを取得し、これを Authorization ヘッダーで使用し、保護されているリソースを要求します。
  • Docker レジストリーが Red Hat Single Sign-On サーバーから、保護されたリソースの新規リクエストを受信すると、レジストリーはトークンを検証し、要求されたリソースへのアクセスを許可します (必要に応じて)。
注記

Docker プロトコルを使用した認証に成功したら、Red Hat Single Sign-On 側でユーザーセッションは作成されません。ブラウザーの SSO セッションの場合、Docker プロトコルは使用されず、トークンを更新する方法がないため、特定のトークン/セッションがまだ有効であれば Red Hat Single Sign-On サーバーに尋ねる方法はありません。したがって、このプロトコルではセッションの作成は必要ではありません。詳細は「一時的なセッション」を参照してください。