コンテンツへスキップ

セキュリティ

セキュリティ、認証、認可を処理する方法はたくさんあります。

そして、それは通常、複雑で「難しい」トピックです。

多くのフレームワークやシステムでは、セキュリティと認証の処理だけで多大な労力とコードが必要になります(多くの場合、書かれた全コードの50%以上を占めることもあります)。

FastAPI は、すべてのセキュリティ仕様を学習することなく、標準的な方法で、簡単に、迅速にセキュリティに対処するのに役立ついくつかのツールを提供します。

しかし、まずいくつかの小さな概念を確認しましょう。

お急ぎですか?

これらの用語を気にせず、ユーザー名とパスワードに基づく認証ですぐにセキュリティを追加する必要がある場合は、次の章にスキップしてください。

OAuth2

OAuth2は、認証と認可を処理するいくつかの方法を定義する仕様です。

これは非常に広範な仕様であり、いくつかの複雑なユースケースをカバーしています。

「サードパーティ」を使用した認証方法が含まれています。

「Facebook、Google、Twitter、GitHubでログイン」するすべてのシステムが内部で使用しているものです。

OAuth 1

OAuth 1は存在しましたが、OAuth2とは大きく異なり、通信の暗号化方法に関する直接的な仕様が含まれていたため、より複雑でした。

現在ではあまり人気がなく、使用されていません。

OAuth2は通信の暗号化方法を規定していません。HTTPSでアプリケーションを提供することを想定しています。

ヒント

デプロイメントのセクションでは、TraefikとLet's Encryptを使用してHTTPSを無料で設定する方法を説明します。

OpenID Connect

OpenID Connectは、OAuth2に基づいた別の仕様です。

OAuth2で比較的曖昧な点をいくつか指定することで、相互運用性を高めようとOAuth2を拡張しただけです。

例えば、GoogleログインはOpenID Connectを使用しています(内部的にはOAuth2を使用しています)。

しかし、FacebookログインはOpenID Connectをサポートしていません。独自のOAuth2のフレーバーを持っています。

OpenID (「OpenID Connect」ではない)

「OpenID」という仕様もありました。これはOpenID Connectと同じ問題を解決しようとしましたが、OAuth2に基づいていませんでした。

したがって、これは完全に別のシステムでした。

現在ではあまり人気がなく、使用されていません。

OpenAPI

OpenAPI(以前はSwaggerとして知られていた)は、API構築のためのオープン仕様です(現在はLinux Foundationの一部です)。

FastAPIOpenAPI に基づいています。

これにより、複数の自動対話型ドキュメントインターフェース、コード生成などが可能になります。

OpenAPIには、複数のセキュリティ「スキーム」を定義する方法があります。

これらを使用することで、これらの対話型ドキュメントシステムを含む、すべての標準ベースのツールを利用できます。

OpenAPIは以下のセキュリティスキームを定義しています。

  • apiKey: アプリケーション固有のキーで、以下から取得できます。
    • クエリパラメーター。
    • ヘッダー。
    • クッキー。
  • http: 標準HTTP認証システム、以下を含む
    • bearer: 値がBearerとトークンであるAuthorizationヘッダー。これはOAuth2から継承されています。
    • HTTPベーシック認証。
    • HTTPダイジェストなど。
  • oauth2: すべてのOAuth2のセキュリティ処理方法(「フロー」と呼ばれます)。
    • これらのフローのいくつかは、OAuth 2.0認証プロバイダー(Google、Facebook、Twitter、GitHubなど)を構築するのに適しています。
      • implicit
      • clientCredentials
      • authorizationCode
    • しかし、同じアプリケーションで直接認証を処理するために完全に利用できる特定の「フロー」が1つあります。
      • password: 次のいくつかの章でその例をカバーします。
  • openIdConnect: OAuth2認証データを自動的に検出する方法を定義できます。
    • この自動検出は、OpenID Connect仕様で定義されているものです。

ヒント

Google、Facebook、Twitter、GitHubなどの他の認証/認可プロバイダーを統合することも可能で、比較的簡単です。

最も複雑な問題は、そのような認証/認可プロバイダーを構築することですが、FastAPI は、面倒な作業を代行しながら、簡単にそれを行うためのツールを提供します。

FastAPI ユーティリティ

FastAPIは、これらのセキュリティメカニズムの使用を簡素化するために、fastapi.securityモジュール内の各セキュリティスキームにいくつかのツールを提供します。

次の章では、FastAPI が提供するこれらのツールを使用してAPIにセキュリティを追加する方法について説明します。

また、それが対話型ドキュメントシステムに自動的に統合される方法も確認できます。