カテゴリー
アーカイブ

10.31
2025

サクッと安全に、FastAPI に認証機能を追加する 〜FastAPI Users の紹介〜

  • LINE

はじめに

前回までの記事では、FastAPI の標準機能を用いて認証を実装する方法を紹介しました。

実際に実装してみると、思ったよりも自前で処理を書く必要があった印象です。初期構築に時間がかかってしまうという課題もありますが、セキュリティの観点からも認証処理はなるべく自前で用意せず、よく検証されたフレームワークやライブラリを利用すべきです。

そこで今回は「FastAPI になるべく手間をかけず、安全に認証機能を追加したい」という方に向けて、FastAPI Users というライブラリを紹介します。

 

基礎となる知識

記事の中では、FastAPI の初期構築方法は扱いません。初期構築方法については、FastAPI の公式ドキュメント などをご参照ください。

また、JWT の詳細についても割愛します。JSON Web Tokenの概要 や過去の記事 FastAPI の認証機能を試してみる(その2 ~JWT導入編~) などをご覧いただけますと幸いです。

 

FastAPI Users の使い方

最短距離で試したいので、Full example - FastAPI Users を見てみます。今回は SQLAlchemy を使用する方法を見ていきます。

実際に動かしてみると、それほど多くないコード量で

・ログイン/ログアウト
・ユーザーの登録/取得/更新/削除
・パスワードリセット

などのエンドポイントを即座に用意することができました。

コードを確認していきます。

・requirements.txt
 … fastapi の初期構築や DB 接続で必要なライブラリを除いて、fastapi-users[sqlalchemy] のみを追加でインストールすれば良いようです。

・main.py
 … API サーバー起動時のエントリポイントです。

・app/app.py
 … FastAPIUsers.get_xxx_router() を使って生成した APIRouter をFastAPI.include_router() に渡すことで、各エンドポイントを登録しています。

・app/db.py
 … ユーザーモデルやユーザーを取得する関数を定義しています。

・app/schema.py
 … ユーザーの登録/取得/更新で使用する API スキーマを定義しています。例では、FastAPI Users で定義されたスキーマをそのまま使用しているようです。

・app/users.py
 … ユーザー関連の操作やエンドポイントを実装しています。

これらをある程度把握した上で Overview を見ると、全体をイメージしやすいかもしれません。

 

やってみた結果

ユーザー操作を実装するのは意外と手間がかかりますが、FastAPI Users を使用することで基本的な操作を一通り、時間をかけずに用意できました。動くシステムを短時間で作る上ではかなり有用だと感じます。

なお今回試した認証方法においては、トークンリフレッシュ処理はライブラリ側では用意されておらず、必要な場合は自前で実装する必要がありそうです。
参考:Token refresh · fastapi-users/fastapi-users · Discussion #350 

 

まとめ

FastAPI になるべく手間をかけず、安全に認証機能を追加できるライブラリ「FastAPI Users」を紹介しました。私もまだ細かく触れられてはいないので、実際に動かしながらカスタマイズ方法などを調べていきたいです。

今回の記事が、FastAPI の認証処理の実装に悩んでいる方の助けになれば幸いです。

 

補足

FastAPI Users は 2025/10 現在、メンテナンスモードに入っているそうです(セキュリティアップデートは継続)。

[!NOTE] This project is now in maintenance mode. While we'll continue to provide security updates and dependency maintenance, no new features will be added. We encourage you to explore the project and use it as-is, knowing it will remain stable and secure.

We're currently working on a new Python authentication toolkit that will ultimately supersede FastAPI Users. Stay tuned for updates!

引用:FastAPI Users 公式ドキュメント(2025/10/31時点)

とあります。 新しい認証ツールキットを開発中という内容が記載されていますので、今後の動きに注目したいですね。

 

参考文献

FastAPI Users 公式ドキュメント

 

"全員が技術者" ベイストリームは横浜発のPythonのプロフェッショナル集団です。
積極採用中!尖ったPythonエンジニアへの第一歩はこちらから