Webアプリケーションをインターネットに公開した際、社内ツールや自分専用のツールであれば「特定の人しかアクセスできないようにしたい」と考えるのは当然です。本記事では、FastAPIで構築したWebアプリに対し、安全かつモダンなパスワード認証(アクセス制限)を実装するアプローチについて解説します。
1. ベーシック認証のデメリット
アクセス制限と聞いて真っ先に思い浮かぶのは、ブラウザの標準機能である「ベーシック認証」です。しかし、ベーシック認証はアクセスするたびに無機質なポップアップが表示され、また仕組み上どうしても「ID」と「パスワード」の両方の入力が求められます。「社内用だから共通のパスワード1つだけでシンプルに制限したい」というニーズには少し不向きな面があります。
2. パスワード専用入力画面の構築
よりユーザーフレンドリーで柔軟なアプローチは、アプリを開いた際にWebページとして「シンプルなパスワード入力画面」を直接表示させる手法です。 FastAPIとHTMLテンプレートを組み合わせることで、ID入力を省いたパスワードのみの認証画面を簡単に構築できます。正しいパスワードが入力された場合のみ、Cookie(セッション)にログイン状態を保存し、メインのアプリ画面へリダイレクトさせます。
3. AIに実装を依頼する際のポイント
この仕組みをAIアシスタントに実装してもらう際は、以下のように明確に指示を出します。 「ブラウザのベーシック認証ではなく、サイトを開いた時にパスワード入力画面を表示し、パスワードのみ(ID不要)でアクセス制限をかけてください。セキュリティのため、パスワードはコードに直書きせず環境変数を利用してください。」
まとめ
要件に合わせて認証の仕組みを選ぶことは、UI/UXの向上につながります。ID不要のシンプルなパスワード画面を実装することで、利用者の手間を減らしつつ、最低限のセキュリティを担保することができます。
編集後記
セキュリティと利便性のバランスは常に開発者を悩ませるテーマです。金融システムであれば厳重な多要素認証が必要ですが、ちょっとした業務効率化ツールに毎回複雑なログインを求めるのは本末転倒になることも。環境変数を使ったパスワードの切り離しさえしっかり行っていれば、用途に合わせた軽快な認証システムをサクッと作れるのが、FastAPIのようなモダンなフレームワークの強みですね。