PyCon JP 2024

DjangoとFastAPIによる実践認証技術
2024-09-28 , 20F Track1

本発表では、Pythonの主要なWebフレームワークであるDjangoとFastAPIを使用しての認証技術に焦点を当てており、それぞれの認証技術の仕組みや開発時のベストプラクティスについて解説します。

本発表ではSPA + WebAPI構成でのバックエンドのRESTful APIにおける認証技術の概要、種類、そしてその実装方法について詳細に解説します。メールアドレスとパスワードによる一般的なログイン認証について重点的に説明し、OAuthなどについては扱いません。

発表の前半では、認証の基本概念と仕組みについて説明します。
認証の基本的な知識であるステートレスとステートフル認証の違いとそのメリット・デメリットについてもお話しします。
特に、ステートレス認証のトークン管理の実際の手法や、セキュリティ上の考慮事項についても深堀りします。

次に、DjangoとFastAPIそれぞれのフレームワークでの認証部分の実装方法を具体的なコード例とともに紹介します。
Djangoでは、トークンベースの認証、JWT(JSON Web Token)を利用した仕組みや実装についても触れ、デフォルトの認証機構との違いについてもお話しします。
また、django-ninjaやdjango-restframeworkなどのプラグインを使用した際のそれぞれの認証の内部仕組みや違いについても詳述します。一方、FastAPIでは、JWTを用いた認証の実装方法を中心に説明します。

最後に、これらの技術を組み合わせたシステム設計のベストプラクティスと、現場での実際の適用例についてもお話しします。


今日ではSPA + WebAPIなどによるフロントとバックエンドを分ける構成が増えてきています。そのため、DjangoやFastAPI上でその構成を考慮した認証の仕組みを開発する必要があります。

開発者がDjangoおよびFastAPIを使用して安全かつ効果的なWebアプリケーションを構築するための認証技術を理解し、実際のプロジェクトで即座に応用できるような知識やノウハウをお話ししていきます。
特に、ステートレス認証とステートフル認証の概念や違い理解し、認証の種類や仕組みなど適切な場面での利用方法などをお話しします。

アジェンダ

  • 認証の基本概念と重要性
  • 認証とは何か、その役割と必要性
  • 認証と認可の違い

  • ステートレス vs ステートフル認証

  • セッション認証とトークン認証の基本概念と仕組み
  • 両者の違いと利点・欠点
  • トークン管理とセキュリティ考慮事項

  • Djangoにおける認証技術

  • デフォルトの認証機構の概要
  • トークンベースの認証と実装
  • JWTの認証と実装
  • django-ninjaやdjango-restframeworkの認証の内部仕組み

  • FastAPIにおける認証技術

  • トークンベースの認証と実装
  • JWTの認証と実装

  • 実際の適用例とベストプラクティス

  • システム設計における実例
  • 弊社での成功事例とそこで直面した課題とその解決策

Why did you choose this topic?:

認証技術がWeb開発において非常に重要であり、多くの開発者が直面する共通の課題であるためです。
私自身、複数のプロジェクトでDjangoとFastAPIなどを用いた認証基盤の構築に携わってきました。
その中で、認証の基本的な理解から実装に至るまで、多くの知見を得ることができました。
特に、ステートレスとステートフルの認証方式の選択、認証情報をどこに保持するべきかなどについて深く掘り下げることができました。

また、PythonコミュニティではWebアプリケーション開発のノウハウが他の言語界隈に比べて少し少ないと感じています。特に、認証技術に関する具体的な実装方法やベストプラクティスについての情報が不足していると感じています。
そのため、Djangoなどのフルスタックフレームワークに頼り切りで認証の仕組みがブラックボックスになっている開発者が多いことを感じており、認証部分の内部動作やセキュリティ上の考慮が十分に理解されていないケースが見受けられます。

規模が大きくなるにつれてバックエンドとフロントエンドを分離するような構成が当たり前になってきていますが、認証機構をどう設計するべきか詳しくない開発者も多いのも現状です。
この問題を解消し、開発者が認証技術をより深く理解し、適切に実装できるようになることを目指して、この題材を選びました。

Knowledges and know-how the audience can get from your talk:

本発表では、実務で活用できる具体的なDjangoやFastAPIを用いての、認証機構の知識とノウハウを提供します。
また、ステートレスとステートフル認証の違いや、認証情報をどこに保持するべきかなど、それぞれの利点・欠点についても深く理解することができます。

  • 認証の基本概念と重要性についての深い理解
  • DjangoとFastAPIにおける具体的な認証の実装方法
  • Django REST frameworkやdjango-ninjaを用いた認証の内部仕組み
  • FastAPIでのJWTを用いた認証の実装手法
  • ステートレスとステートフル認証の違いと実装方法と両者のメリット・デメリット
  • トークン管理とセキュリティの考慮事項
  • 認証技術を用いたシステム設計のベストプラクティスと実際の適用例
Prior knowledges speakers assume the audience to have:
  • 基本的なPythonの知識
  • Webアプリケーションの基本的な理解
  • DjangoまたはFastAPIの基本的な知識
Audience experiment:

Intermediate

Language of presentation:

日本語

Language of presentation material:

日本語