トークン エンドポイント 1. 2-1. 処理シーケンス Code State Code State Token Code Token State Token State State State State Code Session → State Session ← 2-2. 3-1. 3-2. Secret Secret 💃 遷移がめっちゃ複雑なので OAuth Danceと呼ばれます 今回はポイントを絞って 説明します
エンドポイント トークン エンドポイント 1. 2-1. どこでエラーが起きるか Code State Code State Token Code Token State Token State State State State Code Session → State Session ← 2-2. 3-1. 3-2. Secret Secret A. 認可エンドポイントで 画面表示時にエラー発生、 バックエンドサーバーに HTTP302でリダイレクト B. 認可エンドポイントで 認可操作実行時にエラー発生、 バックエンドサーバーに HTTP302でリダイレクト C. トークンエンドポイントで トークン交換時にエラー発生、 バックエンドサーバーに HTTP400でレスポンス返却 D. (リソース取得でエラー発生) A. B. C. D.
トークン エンドポイント 1. 2-1. OAuthはとても複雑💃 Code State Code State Token Code Token State Token State State State State Code Session → State Session ← 2-2. 3-1. 3-2. Secret Secret 🤖 正常系はライブラリに任せて、 🧠 異常系に注力しましょう
etc...) • GitHubの認可画面にリダイレクト 2.SNS認可画面へ遷移 ユーザーの Webブラウザ バックエンド サーバー 認可 エンドポイント 2-1. State State State Session → GET http://localhost:8000/social/login/github 302 Moved Temporarily Location: https://github.com/login/oauth/authorize?state=sss… GET https://github.com/login/oauth/authorize?state=sss… State 200 OK 2-2. 👶 Secret
エンドポイント • 認可コード&Stateがバックエンド サーバーに渡される • トークンエンドポイントを使い 認可トークンをアクセストークン (access_token)に交換 • トークンを付与してプロフィール取 得エンドポイントへ • プロフィール情報を元にアカウン ト作成やログインを実施 3-2. State Code State Session ← Token Token GET http://localhost:8000/social/complete/github?code=ttt&state=sss… POST https://github.com/login/oauth/access_token Code 200 OK 200 OK 200 OK 👶 Secret Secret Token GET https://api.github.com/user 3.プロフィール情報取得