0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

OAuthの概要と仕組み

Last updated at Posted at 2025-01-17

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の仕組み

主要なエンティティ

  1. リソース所有者(Resource Owner): リソースへのアクセス権を持つエンティティ(通常はエンドユーザー)14
  2. クライアントアプリケーション(Client): リソースにアクセスするアプリケーション14
  3. リソースサーバー(Resource Server): クライアントからのリクエストを受け付け、保護されたリソースへのアクセスを許可するサーバー1
  4. 認可サーバー(Authorization Server): リソース所有者から認可を受け、クライアントにアクセストークンを発行するサーバー14

認可フロー

1. Authorization Code Grant

  • 最も推奨される認可フロー。ウェブアプリやモバイルアプリに最適で、PKCEと組み合わせることでさらなるセキュリティ強化が可能56
  • Google、GitHub、Facebookなど、主要なAPIプロバイダーで標準的に採用57

2. Implicit Grant(非推奨)

  • セキュリティリスクが高く、現在は非推奨。代わりにAuthorization Code Grant with PKCEの使用が強く推奨57

3. Client Credentials Grant

  • サーバー間通信に特化したフロー。Slack、Twitter、Stripeなどのサービス間連携で広く採用5
  • ユーザー認証が不要なバックエンドサービス間の連携に最適7

4. Password Grant(非推奨)

  • 最もセキュリティリスクが高く、OAuth 2.0の仕様で明確に非推奨とされている57
  • レガシーシステムの移行期間中のみ限定的に使用を検討7

OAuth 1.0とOAuth 2.0の比較

OAuth 2.0は、OAuth 1.0と比較して以下のような改善が行われている:

  • より多くのセキュリティ機能と柔軟性を提供5
  • アクセストークンの有効期限の設定が可能5
  • リフレッシュトークンの使用7
  • より詳細なアクセス制御2

OAuth 2.0は、新規実装されるサービスでの使用が推奨されており、OAuth 1.0は既存サービスのサポートのためにのみ使用されることが想定されている3

参照

1 2 3 4 8 9 10 11 12 13 5 7 6

  1. https://apidog.com/jp/blog/oauth-2-guide/ 2 3 4 5 6 7 8 9 10

  2. https://lab.wallarm.com/what/oauth-とは何ですか-この認証はどのように機能します/?lang=ja 2 3 4

  3. https://openid-foundation-japan.github.io/rfc6749.ja.html 2 3

  4. https://zenn.dev/crebo_tech/articles/article-0011-20241006 2 3 4

  5. https://qiita.com/TakahikoKawasaki/items/200951e5b5929f840a1f 2 3 4 5 6 7 8

  6. PKCEによるOAuth 2.0のセキュリティ強化 2

  7. https://zenn.dev/tanaka_takeru/articles/538aaa2fa9af8b 2 3 4 5 6 7

  8. https://www.weblio.jp/wkpja/content/OAuth_歴史

  9. https://auth0.com/jp/intro-to-iam/what-is-oauth-2

  10. https://ja.wikipedia.org/wiki/OAuth

  11. https://techblog.asia-quest.jp/202410/what-is-oauth-2.0-authentication-and-authorization

  12. https://e-words.jp/w/OAuth.html

  13. https://openid-foundation-japan.github.io/rfc5849.ja.html

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?