OAuth 2.0の概要
OAuth 2.0は、インターネット上のサービス間で安全にリソースへのアクセス権を委譲するための業界標準の認可フレームワークである1。
OAuthの歴史
初期の開発
2006年、Blaine CookとChris Messinaによって、ユーザーが自分のデータを安全に共有できる新しい方法を模索する中でOAuthの開発が始まった2。
OAuth 1.0
2007年にOAuth 1.0が初めてリリースされた。このバージョンでは、ユーザーが自分のユーザー名とパスワードを直接共有する代わりに、トークンを使用して情報を共有できるようになり、データの安全性が大幅に向上した2。
OAuth 2.0
OAuth 2.0は、OAuth 1.0の後継バージョンとして開発された。OAuth 1.0で得られた経験を基に、さらなるユースケースや拡張性を考慮して策定されている3。
OAuth 2.0の特徴
- 認可フレームワーク: ユーザーが自分のリソースへのアクセス許可を、サードパーティのアプリケーションに安全に委託できる1
- スコープ指定と最小特権の原則: アクセス許可には範囲(スコープ)を設定でき、最小限の権限のみを付与できる1
- 安全性: ユーザーのログイン情報を直接共有せずに認証を行うため、より安全である1
- 標準化されたプロトコル: 多くのサービスで採用されている標準的なプロトコルである1
OAuth 2.0の仕組み
主要なエンティティ
- リソース所有者(Resource Owner): リソースへのアクセス権を持つエンティティ(通常はエンドユーザー)14
- クライアントアプリケーション(Client): リソースにアクセスするアプリケーション14
- リソースサーバー(Resource Server): クライアントからのリクエストを受け付け、保護されたリソースへのアクセスを許可するサーバー1
- 認可サーバー(Authorization Server): リソース所有者から認可を受け、クライアントにアクセストークンを発行するサーバー14
認可フロー
1. Authorization Code Grant
- 最も推奨される認可フロー。ウェブアプリやモバイルアプリに最適で、PKCEと組み合わせることでさらなるセキュリティ強化が可能56。
- Google、GitHub、Facebookなど、主要なAPIプロバイダーで標準的に採用57。
2. Implicit Grant(非推奨)
3. Client Credentials Grant
4. Password Grant(非推奨)
OAuth 1.0とOAuth 2.0の比較
OAuth 2.0は、OAuth 1.0と比較して以下のような改善が行われている:
OAuth 2.0は、新規実装されるサービスでの使用が推奨されており、OAuth 1.0は既存サービスのサポートのためにのみ使用されることが想定されている3。
参照
-
https://apidog.com/jp/blog/oauth-2-guide/ ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7 ↩8 ↩9 ↩10
-
https://lab.wallarm.com/what/oauth-とは何ですか-この認証はどのように機能します/?lang=ja ↩ ↩2 ↩3 ↩4
-
https://openid-foundation-japan.github.io/rfc6749.ja.html ↩ ↩2 ↩3
-
https://zenn.dev/crebo_tech/articles/article-0011-20241006 ↩ ↩2 ↩3 ↩4
-
https://qiita.com/TakahikoKawasaki/items/200951e5b5929f840a1f ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7 ↩8
-
https://zenn.dev/tanaka_takeru/articles/538aaa2fa9af8b ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7
-
https://techblog.asia-quest.jp/202410/what-is-oauth-2.0-authentication-and-authorization ↩