OAuth の概要

OAuth (Open Authorization) は、ユーザーが実際のログイン認証資格情報を共有せずに、ある Web サイトまたはアプリケーション上のリソースへの限定的なアクセスを別の Web サイトまたはアプリケーションに許可できるようにする認証プロトコルです。

OAuth は信頼できる仲介者のように機能し、ユーザー名とパスワードを明らかにすることなく、あるサービスに、別のサービスからデータにアクセスするパーミッションを付与することができます。このドキュメントには、OAuth ワークフローの技術的な説明と OAuth の現実的な例えが含まれています。

OAuth ワークフロー

OAuth は、ログイン認証資格情報を共有せずに、ユーザーがさまざまな Web サイトやアプリケーションにまたがってデータへのアクセス権を付与するための安全で標準化された方法を提供します。これにより、どのサービスがデータにアクセスできるかを制御できるほか、いつでもアクセス権を取り消すことができます。

次のリストは、OAuth の仕組みを段階的に説明したものです。

あなた (ユーザー) は、別の Web サイトまたはアプリケーション (「リソース サーバー」と呼ばれます) 上のデータにアクセスする必要がある Web サイトまたはアプリケーション (「クライアント」と呼ばれます) を使用したいと考えています。

クライアントから、リソース サーバーのデータにアクセスするためのパーミッションが要求されます。通常、これはリソース サーバーのログイン ページにリダイレクトすることによって行われます。

ユーザーは、リソース サーバーのログイン ページにログイン認証資格情報を直接入力します。ユーザー名とパスワードがクライアントと共有されることはないため、このステップは非常に重要です。

リソース サーバーは認証資格情報を検証し、ユーザーを認証します。認証されると、クライアント向けに一意のアクセス トークンが生成されます。

リソース サーバーは、ユーザーをクライアント アプリケーションにリダイレクトし、リダイレクトと同時にアクセス トークンを提供します。

クライアントは、データにアクセスする必要があるたびにアクセス トークンを受け取り、それをリソース サーバーに送信します。

リソース サーバーはアクセス トークンの有効性をチェックします。トークンが有効な場合、要求されたリソースへのアクセス権が期間限定でクライアントに付与されます。

クライアントは、付与されたアクセス権を使用して、リソース サーバー上のデータを取得したり、変更したりできますが、アクセス トークンによって定義された範囲内のみで可能です。この範囲によって、クライアントがアクセスできるアクションとデータが決まります。

アクセス トークンの有効期限が切れた場合、またはクライアントに追加のパーミッションが必要な場合、クライアントは、認証プロセスをもう一度実行することで、新しいアクセス トークンを要求できます。

OAuth の現実的な例え

ここでは、実際的なシナリオを使用して、OAuth がどのように機能するかを例え話で説明します。

あなたはパーティーを開くために、料理を扱うケータリング業者 (クライアント) を雇いたいと考えています。ただし、ケータリング業者に家の鍵 (ログイン認証資格情報) を渡すと、ケータリング業者がすべての私物にアクセスできるようになるため、ケータリング業者に鍵を渡したくありません。そのため、信頼できる幹事 (OAuth) にアクセスを管理してもらいます。

幹事にケータリング業者を雇いたいと伝えます。幹事は、あなたの家へのアクセスやケータリング サービスの扱い方を知っています。

幹事はケータリング業者に連絡し、ミーティングのためにあなたの家に行くように伝えます。この時点で、あなたは家にいません。

ケータリング業者はあなたの家に到着しますが、あなたの許可 (アクセス トークン) がなければ家に入ることはできないことに気づきます。ケータリング業者はあなたに電話をかけて、アクセスを求めます。

あなたは家の所有者として、アクセスを許可する前に、ケータリング業者の信頼性を確認する必要があります。そこで、ケータリング業者にいくつかの質問をして、本人確認 (認証) を行います。

ケータリング業者の信用証明に納得したら、電話を通じて一時的なアクセス コード (アクセス トークン) をケータリング業者に伝えます。このコードにより、ケータリング業者はケータリング業務の範囲内のみで、あなたの家に入って食事を準備できるようになります。

ケータリング業者はアクセス コードを使用してあなたの家に入り、食事の準備を始めます。ケータリング業者はキッチンとダイニング エリアにはアクセスできますが、他の部屋への立ち入りは制限されています。

指定された期間が経過すると、またはパーティーが終わると、アクセス コードの有効期限が切れ、ケータリング業者は、あなたの許可なしに、家にもう一度入ることができなくなります。

このシナリオでは、あなた (家の所有者) がユーザー、ケータリング業者がクライアント アプリケーションであり、あなたの家がリソース サーバー上の個人データを表しており、幹事が OAuth です。

アクセス コードはアクセス トークンとして機能し、クライアント (ケータリング業者) が、ログイン認証資格情報 (家の鍵) を侵害することなく、リソース (家) に限定的にアクセスできるようにします。

OAuth は信頼できる仲介者として機能し、アクセス許可の制御を維持しながら、サービス間でデータの安全な共有を円滑に進めます。