OAuth 2.0で保護されたAPIにアクセスする方法
OAuth 2.0は、ユーザーがGoogleやGitHubなどのサードパーティアプリケーションに、自分に代わってサービスへのアクセスや登録を許可するための認証フレームワークです。これにより、ユ ーザーはWeb登録時に繰り返し情報を入力する必要がなくなり、サードパーティ認証ログインを利用する際の個人データのセキュリティと柔軟性が確保されます。この記事では、Googleアカウントでのサインインと認証を例に、Apidogを使用してOAuth 2.0 APIをデバッグする方法を紹介します。はじめに#
Googleアカウントを使用して認証を行うウェブサイトが開発されたとします。この設定では、ウェブサイトがクライアントとして機能し、Googleが認証サーバーとなります。ウェブサイト内でGoogle OAuth 2.0を統合するには、以下の手順に従う必要があります。Google API Console Projectを登録していない場合は、公式ドキュメントを参照して新しいOAuthクライアントを作成してください。1. ウェブページがGoogleにユーザー認証をリクエストする#
ユーザーが「Googleでサインイン」ボタンをクリックすると、ウェブサイトはGoogleのOAuth 2.0認証サーバーにリクエストを送信し、ユーザーのGoogleアカウントへのアクセス許可を取得します。リクエストページのURLはhttps://accounts.google.com/o/oauth2/v2/auth/
です。公式ドキュメントに基づき、リクエストには以下のパラメータを含める必要があります。パラメータ | 説明 |
---|
client_id | 必須、アプリケーションのクライアントID。API ConsoleのCredentialsページで確認できます。 |
redirect_uri | 必須、認証フロー完了後にAPIサーバーがユーザーをリダイレクトする場所。OAuth 2.0クライアントの認可済みリダイレクトURIと完全に一致する必要があります。 |
response_type | 必須、Google OAuth 2.0 APIが認証コードを返すかどうかを決定します。Webサーバーアプリケーションの場合は、パラメータ値をcodeに設定します。 |
scope | 必須、アプリケーションがユーザーの代わりにアクセスできるリソースを識別するスコープのリスト。これらの値は、Googleがユーザーに表示する同意画面に反映されます。 |
access_type | 推奨、ユーザーがブラウザにいない場合にアプリケーションがアクセストークンを更新できるかどうかを示します。有効なパラメータ値は、デフォルト値のonlineとofflineです。 |
state | 推奨、認証リクエストと認証サーバーの応答間で状態を維持するためにアプリケーションが使用する任意の文字列値。 |
この形式は、Google OAuth 2.0に必要な基本的なパラメータを示しています。ユーザーエクスペリエンスやアプリケーションのセキュリティをカスタマイズするために、他にも多くのオプションパラメータがあります。詳細は公式ドキュメントを参照してください。 2. ユーザーがアプリケーションを認可する#
ユーザーがアカウント情報を入力すると、Googleは指定されたリソースへのアクセス許可を求める同意画面を表示します。ユーザーがリクエストを承認すると、Googleは認証トークンをWebサーバーに送信します。ユーザーがリクエストを拒否すると、GoogleはエラーメッセージをWebサーバーに返します。
3. ウェブページがGoogleにアクセストークンをリクエストする#
ユーザーが許可を承認すると、Googleから認証トークンが送信され、レスポンスに含まれます。ユーザーがリクエストを承認しない場合、レスポンスにはエラーメッセージが含まれます。Webサーバーに返される認証コードまたはエラーメッセージは、以下のようにクエリ文字列に表示されます。# エラー
http://example.com/#error=access_denied&state=state_parameter_passthrough_value
# 成功
http://example.com/#state=state_parameter_passthrough_value&access_token=***&token_type=Bearer&expires_in=***&scope=email%20https://www.googleapis.com/auth/userinfo.email%20openid&authuser=0&prompt=consent
URLからアクセストークンを抽出し、他のGoogle APIサービスにアクセスするために使用できます。4. アクセストークンを送信してGoogle APIから情報を取得する#
「Openidconnect API」を例に、アクセストークンを使用して以下のURLにリクエストを送信し、ユーザーのGoogleアカウント情報にアクセスできます。Apidogのプロジェクトで新しいリクエストを作成し、ターゲットURLを貼り付けてアクセストークンをパラメータに入力します。「送信」ボタンをクリックしてAPIのレスポンスを取得します。5. Googleがアクセストークンを確認する#
アクセストークンが受信されると、Googleはその有効性を確認し、関連する認可されたクライアントを特定します。トークンが有効な場合、Googleはユーザー情報を返します。トークンが無効または期限切れの場合、Googleはエラーメッセージを返します。ご覧の通り、APIのレスポンスはJSONオブジェクトで、ユーザーのGoogleアカウントのpicture
とemail
が含まれています。ウェブサイトはこのデータを使用して、ユーザーのプロフィール画像とメールアドレスを自動的に表示し、手動での入力を不要にすることができます。この記事では、Apidogを使用してGoogleのOAuth 2.0 APIをリクエストする方法を5つのステップで説明しました。Apidogを使用してOAuth 2.0 APIをデバッグすることで、上流と下流のプロセスで必要なパラメータをより明確に可視化し、開発体験を最適化できます。完全なワークフローが正常に実行されると、バックエンド開発者はコードを書き始めて、開発中に検証する必要なく、ビジネスプロセス全体を完了できます。参考文献