PyCon JP 2022

Python Social Authで学ぶ、OAuth2.0認可コードフローにおける異常系への対処
2022/10/15 , pyconjp_4
言語: 日本語

Webアプリケーションでソーシャルログイン機能を提供したい時、Python Social Authの各種ライブラリを利用すると僅かな設定追加で簡単に実装がおこなえます
しかし、実際に運用を始めるとライブラリから様々な例外が送出されはじめ、OAuthに関する知識がないとそれが何を意味するものか判断できず、対応に苦慮します

本セッションでは python-social-auth/social-core で定義されているソーシャルログイン関連の例外クラスを概観し、それが 様々なIdPの実装やフローとどのように対応するか理解し、対処ができるようになることを目指します


予定稿

  • 自己紹介(1分)
  • 本セッションの概要(1分)
  • サンプルWebアプリケーション(5分)
  • python-social-auth/social-app-djangoを用いたソーシャルログインの実装
  • 共通機能にあたる python-social-auth/social-core について
  • OAuthのおさらい(5分)
    • OAuth2.0について
    • 理想的な世界における認可コード付与(Authorization Code Grant)フローの動作
  • 現実世界において生じる例外(10分)
    • ユーザーの操作に起因する例外
      • 原因の理解とフローとの対応関係
      • ハンドリングにおける考慮事項
    • ユーザーの環境(Webブラウザ)に起因する例外
      • 原因の理解とフローとの対応関係
      • ハンドリングにおける考慮事項
    • プロバイダに起因する例外
      • 原因の理解とフローとの対応関係
      • ハンドリングにおける考慮事項
    • その他の例外
  • まとめ(2分)

このトークで話さないこと

  • python-social-auth/social-coreで定義される 全例外 や、 プロバイダごとの実装 に対する詳細な解説
    • 技術的な網羅性よりも、例外を大まかにグルーピングした上で、それらをハンドリングする際にユーザーに対してどのようなメッセージを表示すべきか…といった実務上で理解・検討すべき諸事項に主眼をおいた発表をおこなう想定です
  • OAuthに関する歴史的経緯や仕様詳細についての解説
    • OAuthの正確な理解よりも、認可コード付与フローの基本的な流れを理解した上で、フロー上のどの部分で例外が送出されうるか…といった観点で発表をおこなう想定です
  • サンプルアプリケーション(Django)以外でのPython Social Authの利用方法