【おーおーす】

OAuth とは?

最終更新:
💡 パスワードを渡さずに「鍵の一時貸し」をする仕組み

サードパーティアプリにパスワードを渡さずにリソースへのアクセスを許可する認可フレームワーク。

📌 このページのポイント
OAuth 2.0:アクセスを認可する ① 利用者が連携する範囲を許可 写真サービス側で利用者を確認 印刷アプリ クライアント 認可サーバー ②要求 ③発行 ④ トークンでAPIを利用 写真サービスが許可範囲を検証 パスワードを共有せず、トークンは保護する
写真印刷アプリにアクセスを許可する概略。認可コード方式ではコードをトークンに交換します。APIへのアクセス用トークンと、利用者の認証を伝えるOIDCのIDトークンは役割が異なります。
ひよこ ひよこ
OAuthって何を解決するの?
ペンギン先生 ペンギン先生
例えば写真印刷アプリに、写真サービスの写真を読む権限だけを許可したい場面だよ。OAuthでは写真サービス側で利用者を確認し、許可した範囲にアクセスするためのトークンを発行する。印刷アプリへ写真サービスのパスワードを渡さずに連携できるんだ。
ひよこ ひよこ
認証と認可の違いは?
ペンギン先生 ペンギン先生
認証は「あなたは誰?」を確かめること、認可は「何をしていい?」を許可することだよ。OAuthは認可の仕組みで、アクセストークンだけを利用者の本人確認に使うものではない。ログイン連携には、OAuth 2.0を拡張して認証結果を伝えるOpenID Connectなどを使うんだ。
ひよこ ひよこ
アクセストークンって何?
ペンギン先生 ペンギン先生
保護されたAPIへアクセスするための認証情報だよ。許可範囲や有効期間は発行元の設定による。リフレッシュトークンが発行される場合は、再びアクセストークンを取得できる。ただしBearerトークンは持っている人が使えるため、漏れれば許可範囲の操作をされるおそれがあるんだ。
ひよこ ひよこ
実装時の注意点は?
ペンギン先生 ペンギン先生
認可コード方式ではPKCEを使い、リダイレクト先を正しく検証する。CSRF対策には対応を確かめたPKCEや、処理と結び付けて検証するstateなどを使うよ。トークンをURLやログへ漏らさず、通信・保管も保護する。信頼できるライブラリを使っても設定の確認は必要なんだ。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「OAuth」って出てきたら「パスワードを渡さずにアクセス権限を委譲する仕組み」と思えればだいたいOK!
📖 おまけ:英語の意味
「OAuth」 = アクセスを認可するフレームワークの名称
💬 OAuth 2.0の仕様名は「The OAuth 2.0 Authorization Framework」。Authorizationは「何をしてよいか」という認可のことだよ

参考資料

← 用語集にもどる