OAuth 2.0 を完全に理解した
社内勉強会で OAuth 2.0 について発表した原稿を一般向けにも公開します。
https://algas.github.io/oauth2-study/
この記事では発表原稿の内容の一部を抜粋して紹介します。
この記事を読んで期待できる効果
- OAuth 2.0 が怖くなくなる
- OAuth 2.0 をどこでどう使えばいいか把握できる
- RFC 6749 が読めるようになる
概要
- OAuth 2.0 とは何か
- RFC 6749 (OAuth2.0) を読む
- OAuth 2.0 の使い方
OAuth2.0とは何か
認証と認可
- 認証: アクセスしたのが誰であるかを確認すること
- 認可: リソースへのアクセス権限を与えること
- OAuth はこっち
- 認可自体は認証と関係ない(印鑑や切符は持ってれば誰でも使える)
RFC6749を読む
Roles (Page 6)
- Resource Owner: 認可を渡す役割
- Resource Server: 保護されたリソースをホストするサーバ
- Client: 認可をもらう役割
- Authorization Server: 認可のためのトークンを発行するサーバ
Protocol Flow (Page 7)
3行でわかるプロトコルの流れ
- Client -> Resource Owner: リソースにアクセスしたいので Grant ください
(Grant をもらう) - Client -> Authorization Server: Grant あるので Access Token ください
(Access Token をもらう) - Client -> Resource Server: Access Token あるのでリソースください
(リソースをもらう)
Refresh Token (Page 10,47)
3行でわかる Refresh Token
- Client -> Resource Server: Access Token あるのでリソースください
(Token が古いからダメ) - Client -> Authorization Server: Refresh Token あるので Access Token ください
(新しい Access Token と Refresh Token もらう) - Client -> Resource Server: Access Token あるのでリソースください (2回目)
(リソースをもらう)
ポイントは Resource Owner が出てこないこと
OAuth2.0の使い方
Roleごとに見たユースケース
- Resource Owner として OAuth 2.0 を利用する
ユーザとしての利用(消費者側) - Resource Server として OAuth 2.0 を利用する
他のサービスに自社のリソースを使ってもらう(受動的) - Client として OAuth 2.0 を利用する
他のサービスのリソースを使う - Authorization Server として OAuth 2.0 を利用する(能動的)
認可サービスの運用(プラットフォーム側)
まとめ
この記事に抜粋した以外にも自分なりに OAuth 2.0 の仕組みを理解したことが書かれています。
https://algas.github.io/oauth2-study/