1
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?

OAuth2、認可、認証とは?わかりやすく解説!OAuth2の仕組みとその流れを徹底理解

Posted at

はじめに

WebアプリケーションやAPI開発において、認証認可は避けて通れない重要な概念です。特に、外部のサービスと連携する場合にはOAuth2がよく使われます。しかし、「認証と認可の違いは何?」や「OAuth2の流れが複雑で分かりにくい」と感じる方も多いのではないでしょうか?

この記事では、認証認可の違い、そしてOAuth2が何を提供するのかを明確に解説し、OAuth2の流れを図解するような形で分かりやすく説明します。ぜひ、OAuth2の仕組みを理解して、Web開発に役立てましょう!

認証とは?

認証(Authentication)は、ユーザーが誰であるかを確認するプロセスです。たとえば、ログインフォームでユーザー名とパスワードを入力することで、そのユーザーが本当に本人であることを確認する作業が認証です。

認証の例

  • ログイン時にユーザーIDとパスワードを入力する。
  • 指紋認証や顔認証。
  • APIキーやトークンを使ってAPIリクエストを行う。

認可とは?

認可(Authorization)は、特定のユーザーがシステム上のリソースにアクセスする権限があるかどうかを確認するプロセスです。認証によって「誰か」が確認された後、そのユーザーに特定のリソースに対するアクセス権限があるかをチェックします。

認可の例

  • 管理者ユーザーだけが管理画面にアクセスできる。
  • ユーザーが自分のプロフィール情報を編集できるが、他のユーザーの情報にはアクセスできない。

OAuth2とは?

OAuth2は、第三者のアプリケーションに対してユーザーのリソースにアクセスする権限を委譲するための認可プロトコルです。ユーザーが第三者のアプリケーションに直接パスワードを渡すことなく、安全にアクセスを委任できる仕組みを提供します。

OAuth2の利用シーン

  • Googleアカウントでログインして、他のアプリケーションにユーザーのGoogleプロフィールやGmailのデータを共有する。
  • Facebookアカウントでログインし、Facebookの写真や友達リストにアクセスする権限を他のアプリに与える。

OAuth2は、ユーザーの認可(Authorization)を行うためのプロトコルですが、後述のOpenID Connectを使うことで、認証もカバーできます。

OAuth2の基本的な流れ

OAuth2の認可フローは、4つの主要な役割(登場人物)に基づいて動作します。

OAuth2の登場人物

  1. リソースオーナー(Resource Owner): アクセスを許可するユーザー(例: 自分のGoogleドライブのファイルを第三者アプリに提供するユーザー)。
  2. クライアント(Client): リソースオーナーに代わって、リソースサーバーにアクセスするアプリケーション(例: アクセスを求めるサードパーティアプリ)。
  3. リソースサーバー(Resource Server): リソース(データ)を保管しているサーバー(例: Googleのサーバー)。
  4. 認可サーバー(Authorization Server): 認可を管理し、トークンを発行するサーバー(例: GoogleのOAuth2認可システム)。

OAuth2のフロー(認可コードフロー)

  1. 認可リクエスト

    • クライアント(サードパーティアプリ)は、ユーザーに対して認可サーバー(Google)への認可リクエストを送る。ユーザーは認可リクエストを承認するかどうかを選択する。

    • 例: Googleアカウントでログインボタンをクリックすると、Googleの認可画面が表示され、アクセスを許可するか選べる。

  2. 認可コードの発行

    • ユーザーがアクセスを許可すると、認可サーバーはクライアントに認可コードを発行する。このコードは、クライアントがアクセストークンを取得するために必要なもの。
  3. アクセストークンの取得

    • クライアントは認可コードを受け取り、認可サーバーにアクセストークンのリクエストを行う。このリクエストには、クライアントID、認可コード、リダイレクトURL、クライアントの秘密鍵が含まれる。
  4. アクセストークンの発行

    • 認可サーバーがリクエストを承認すると、クライアントにアクセストークンを発行する。このアクセストークンを使って、クライアントはリソースサーバー(GoogleのAPI)にアクセスできる。
  5. リソースへのアクセス

    • クライアントは、リソースサーバーにアクセストークンを送り、リソースにアクセスする(例: Googleドライブのファイルリストを取得)。

OAuth2の流れを図解

OAuth2の利点と課題

利点

  • パスワードを直接共有しない: クライアントがユーザーのパスワードを保持する必要がなく、安全にアクセス権を付与できる。
  • アクセストークンで操作: トークンに有効期限があるため、セキュリティが高くなる。

課題

  • 実装の複雑さ: OAuth2は実装が少し複雑で、特にトークンの管理やリフレッシュの扱いに注意が必要。
  • 認証ではない: OAuth2自体は認可のフレームワークであり、認証を行うものではない。認証が必要な場合はOpenID Connectのようなプロトコルを使用する。

まとめ

  • 認証はユーザーが誰であるかを確認するプロセス。
  • 認可は特定のユーザーがリソースにアクセスする権限があるかを確認するプロセス。
  • OAuth2は、第三者のアプリケーションにユーザーのリソースへのアクセス権限を委譲するための認可フレームワーク。

OAuth2は、Webアプリケーション開発において外部サービスと安全に連携するための基本的な仕組みです。認証認可の違いを理解し、適切にOAuth2を活用することで、安全で効率的なアプリケーションを構築しましょう!

1
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
1
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?