メインコンテンツまでスキップ

4.12. Client Authentication (クライアント認証)

4.12. Client Authentication (クライアント認証)

HTTP を使用するアプリケーションは, しばしばクライアントを認証する必要があります。HTTP は認証のためのいくつかのメカニズムを提供しています:

  • HTTP 認証: [HTTP] セクション 11 で定義されている WWW-Authenticate および Authorization ヘッダーフィールドを使用します。一般的なスキームには Basic [RFC7617] と Digest [RFC7616] 認証があります。

  • ベアラートークン: Bearer スキームを使用して Authorization ヘッダーフィールドに (OAuth 2.0 トークンなどの) トークンを使用します。

  • Cookie: Cookie [COOKIES] を使用して認証されたセッションを維持します。

  • TLS クライアント証明書: TLS レイヤーで証明書を使用してクライアントを認証します。

  • アプリケーション固有のメカニズム: アプリケーションによって定義されたカスタム認証メカニズム。

アプリケーションは, 可能な限り既存のよく理解されている認証メカニズムを使用すべきであり (SHOULD), 新しいものを定義すべきではありません。認証を使用する場合:

  • アプリケーションは転送中の認証資格情報を保護するために TLS を使用しなければなりません (MUST)。

  • アプリケーションは認証の失敗を示すために適切な HTTP ステータスコード (特に 401 Unauthorized403 Forbidden) を使用すべきです (SHOULD)。

  • アプリケーションは認証が失敗したときに明確なエラーメッセージを提供すべきですが (SHOULD), 機密情報 (ユーザー名が存在するかどうかなど) を漏らしてはなりません (MUST NOT)。

  • アプリケーションは認証資格情報の有効期間と更新を考慮すべきです (SHOULD)。

  • アプリケーションは認証状態がリクエスト間でどのように維持されるか (例えば, Cookie を使用するか, すべてのリクエストで Authorization ヘッダーフィールドを要求するか) を指定すべきです (SHOULD)。

アプリケーションは, 認証が認可と異なることを認識すべきです (SHOULD)。認証はクライアントの身元を確立し, 認可はそのクライアントが何を行うことを許可されているかを決定します。