FastAPIにおけるJWT認証

認証は「あなたは誰ですか?」と問いかけます。 認可は「あなたは何ができますか?」と問いかけます。

セキュリティなしでAIプラットフォームを構築すると、誰でもプライベートなデータにアクセスできてしまいます。ユーザープロファイルを変更したり、生徒の学習進捗を閲覧したりすることも可能です。リソースを保護しなければなりません。

JWT (JSON Web Token) がこれを解決します。リクエストのたびにパスワードを送信する代わりに、ユーザーは安全なトークンを送信します。

ワークフロー:

以下のツールを使用する必要があります:

パスワードを平文で保存してはいけません。ハッカーがデータベースを盗んだ場合、すべてが流出してしまいます。代わりに、ハッシュを保存してください。

ハッシュは「password123」をランダムな長い文字列に変換します。ハッシュを元のパスワードに戻すことはできません。入力された値がハッシュと一致するかどうかのみを検証します。

構築方法:

  1. ユーザー登録 ユーザーがユーザー名とパスワードを送信します。パスワードをハッシュ化し、データベースに保存します。

  2. ログイン ユーザーが認証情報を送信します。保存されているハッシュを探し、ライブラリを使用してパスワードを検証します。一致した場合、トークンを作成します。

  3. JWTの生成 トークンにはユーザーデータと有効期限が含まれます。シークレットキーを使用してトークンに署名します。ユーザーがデータを改ざんしようとすると、署名の検証に失敗します。

ログインのレスポンスは以下のようになります: { "access_token": "eyJhbGciOiJIUzI1Ni...", "token_type": "bearer" }

これで、ユーザーはシステムへの鍵を保持することになります。

次のパートでは、これらのトークンを使用して特定のルートを保護し、ユーザーロールを管理する方法を学びます。

手順のまとめ:

Source: https://dev.to/zeroshotanu/fastapi-for-ai-engineers-part-6-jwt-authentication-in-fastapi-5fpk

Optional learning community: https://t.me/GyaanSetuAi