Logo Logo
GitHub Designed by Logto

認証要求 (Authentication request) とは何ですか?

認証要求 (Authentication request) の意味は文脈によって異なる場合がありますが、ここでは OpenID Connect (OIDC) 仕様での定義に焦点を当てます。OIDC では、認証要求はユーザーを認証するための認可サーバーへの 認可要求 (Authorization request) です。

標準の定義は非常に混乱しがちです。なぜなら、「認可リクエスト」のような類似した用語が使用されているからです。これは、OIDC が主に認可を目的として設計された OAuth 2.0 の上に構築されており、OIDC が OAuth 2.0 の用語を継承し、それを拡張して認証をサポートしているためです。

明確にするために、定義に少し文脈を追加しましょう:

(OpenID Connect) 認証要求は、(OAuth 2.0 認可) リクエストを (OpenID Connect 認可) サーバーに送り、ユーザーを認証するためのものです。

さらに長くなりました! では、すべての括弧を取り除いてみましょう:

認証要求は、ユーザーを認証するためにサーバーに送るリクエストです。

すべての属性を取り除くと、定義は簡潔になります。以下に用語の内訳を示します:

次のセクションでは、OIDC をサポートする認可サーバーを指すために「OpenID Provider (OP)」という用語を使用します。

認証要求はどのように機能しますか?

クライアントアプリケーションがユーザーを認証したい場合、OpenID Provider (OP) に認証要求を開始します。前述したように、認証要求は OAuth 2.0 の認可リクエストでもあるため、特定の OAuth 2.0 グラントタイプ (フロー) を使用して認証プロセスを完了できます。

OIDC は認証をサポートするために 3 つのグラントタイプ (フロー) を定義しています:

  1. 認可コードフロー (Authorization code flow) : 最も推奨される認証フローです。 Proof Key for Code Exchange (PKCE) と一緒に使用することで、より高いセキュリティを提供し、ほとんどのアプリケーションに適しています。
  2. インプリシットフロー (Implicit flow) : セキュリティ上の理由で OAuth 2.1 で廃止されている簡略化されたフローです。
  3. ハイブリッドフロー (Hybrid flow) : 認可コードフローとインプリシットフローの組み合わせです。

認証要求は、OIDC の認証フローの最初のステップです。含めるべき具体的なパラメーターや、選択するフローにしたがって従うべき手順は異なります。各フローに関してさらに学びたい場合は、上記のフロー名をクリックしてください。

以下は、認可コードフローを使用した認証要求の簡易な例です:

クライアントがトークンを受け取った後、そのトークン (例: アクセストークン (Access token) ) を使用して、ユーザーに代わって保護されたリソース (例:API) にアクセスすることができます。

認証要求の主要パラメーター

以下は認証要求の主要なパラメーターです:

  • response_type: クライアントが認可サーバーから期待する応答のタイプです。認可コードフローの場合は code、インプリシットフローの場合は id_token、ハイブリッドフローの場合は code id_token です。
  • client_id: OpenID Provider (OP) によって発行されたクライアント識別子です。
  • redirect_uri: 認証要求後にユーザーエージェントをリダイレクトするための URI です。
  • scope: ID トークン (ID token) および アクセストークン (Access token) のために要求される スコープ (許可) です。
  • resource: リクエストされたリソースの リソースインジケーター (Resource indicator) を指定するオプションのパラメーターです。このパラメーターを使用するには、認可サーバーが RFC 8707 をサポートしている必要があります。

上記のパラメーターは完全なリストではないことに注意してください。認証要求を行う前に、使用する特定のフローのパラメーターの完全なリストを参照する必要があります。

関連項目