fastapi/docs/ja/docs/how-to/authentication-error-status...

1.5 KiB

古い 403 認証エラーのステータスコードを使う

FastAPI バージョン 0.122.0 より前は、統合されたセキュリティユーティリティが認証に失敗してクライアントへエラーを返す際、HTTP ステータスコード 403 Forbidden を使用していました。

FastAPI バージョン 0.122.0 以降では、より適切な HTTP ステータスコード 401 Unauthorized を使用し、HTTP 仕様に従ってレスポンスに妥当な WWW-Authenticate ヘッダーを含めます。RFC 7235RFC 9110

しかし、何らかの理由でクライアントが従来の挙動に依存している場合は、セキュリティクラスでメソッド make_not_authenticated_error をオーバーライドすることで、その挙動に戻せます。

たとえば、既定の 401 Unauthorized エラーの代わりに 403 Forbidden エラーを返す HTTPBearer のサブクラスを作成できます:

{* ../../docs_src/authentication_error_status_code/tutorial001_an_py310.py hl[9:13] *}

/// tip | 豆知識

この関数は例外インスタンスを返す点に注意してください。ここでは例外を送出しません。送出は内部の他のコードで行われます。

///