【おーおーすにーてんぜろふろー】

OAuth 2.0フロー とは?

💡 「誰に何を許可するか」の手続きパターン
📌 このページのポイント
OAuth 2.0 認可コードフロー ユーザー アプリ 認可 サーバー リソース サーバー 1 ログイン要求 2 認可リクエスト 3 同意画面を表示 4 認可コード 5 コード→トークン交換 6 トークンでAPI呼出
OAuth 2.0 認可コードフローのイメージ
ひよこ ひよこ

認可コードフローってどんな流れ?

ペンギン先生 ペンギン先生

①アプリがユーザーを認可サーバーリダイレクト、②ユーザーがログインして権限を許可、③認可サーバーがアプリにリダイレクトして認可コードを渡す、④アプリがサーバーサイドで認可コードをアクセストークンに交換。認可コードは使い捨てで短命。トークン交換がサーバーサイドで行われるから安全なんだよ

ひよこ ひよこ

PKCEって何?

ペンギン先生 ペンギン先生

Proof Key for Code Exchangeの略。SPAやモバイルアプリにはclient_secretを安全に保存できないから、代わりにランダムなcode_verifierとそのハッシュ(code_challenge)を使う。認可リクエスト時にcode_challengeを送り、トークン交換時にcode_verifierを送る。これで認可コードを横取りされても悪用できないんだよ

ひよこ ひよこ

どのフローを選べばいい?

ペンギン先生 ペンギン先生

Webアプリ(サーバーサイドあり)は認可コードフロー、SPA・モバイルは認可コードフロー+PKCE、サーバー間通信はクライアントクレデンシャルフロー、TVやIoTデバイスはデバイスコードフロー。インプリシットフローは脆弱性が見つかっているので使わないこと。迷ったら認可コード+PKCEが安全だよ

ひよこ ひよこ

アクセストークンとリフレッシュトークンの違いは?

ペンギン先生 ペンギン先生

アクセストークンはAPIアクセスに使う短命(数分〜数時間)のトークン。リフレッシュトークンは新しいアクセストークンを取得するための長命(数日〜数週間)のトークン。アクセストークンが期限切れになったらリフレッシュトークンで更新する。リフレッシュトークンは安全に保存して、漏洩したら即座に無効化するんだよ

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
OAuth 2.0フロー」って出てきたら「認可を得るための通信手順のパターン」と思えればだいたいOK!
📖 おまけ:英語の意味
「OAuth 2.0 Flow / Grant Type」 = 認可フロー
💬 Grant Type(認可種別)とも呼ぶ。用途に応じたフローを選ぶんだよ
← 用語集にもどる