Auth0でApigeeを保護する

Apigee Edgeを使用してバックエンドサービスAPIを開発および管理する場合、Auth0を使用してAPIプロキシへのアクセスを保護できます。

前提条件

開始する前に、以下が必要です。

  1. 保護する必要のあるApigee EdgeのAPIプロキシを用意します。詳細については、Apigeeの「はじめに」の記事をお読みください。

  2. Auth0にサインアップしてアカウントを取得します。

APIプロキシを構築するプロセスについては、本記事では扱いません。すでにお持ちのAPIプロキシを、Auth0を使ってセキュリティ保護する方法に焦点を当ててご説明します。

カスタムAPIを作成する

まず、Dashboardを使用してApigee Edge APIプロキシを登録します。発行されたすべてのアクセストークンのオーディエンスが正しいことを確認するために、Auth0はApigeeをオーディエンスとして認識する必要があります。ユーザーがアプリケーションを通じてAuth0で認証し、アプリケーションがオーディエンス値を指定して、アクセストークンが提供されたオーディエンスに対して適切なスコープを持つようにします。

次のことをする必要があります。

  1. APIの名前を入力する(例:apigee

  2. APIの識別子を入力する:urn:apigee:target:api

  3. 署名アルゴリズムを選択する:RS256(デフォルト)

Apigee Edge APIプロキシを登録すると、Auth0がマシンツーマシン(M2M)アプリケーションも自動作成し、登録されたAPIと一致する名前を付けます。このアプリケーションはテストに使用することができ、API呼び出しのために認可されるように自動的に構成されます。

テストアプリケーションから変数をメモしておく

APIを登録する際に作成されたテストアプリケーションに切り替え、APIの登録プロセスや関連するM2Mアプリケーションの作成中に設定された変数をメモしてください。このチュートリアルの後続の手順で必要になります。

  1. [Auth0 Dashboard]>[Applications(アプリケーション)]に移動し、テストアプリケーションの名前をクリックします。

  2. 下にスクロールし、以下の変数をメモします。

    • APIオーディエンス

    • Auth0ドメイン

    • クライアントID

    • 許可されているコールバックURL:認証後にユーザーがリダイレクトされるURL。複数のURLを指定するには、カンマで区切って入力します(これは通常、環境ごとにそれぞれ独自のリダイレクトが必要な場合に行います)。

クライアントの資格情報フローを実装する

これで、クライアントの資格情報フローを実装し、Apigee Edgeに提供するアクセストークンを要求する準備が整いました。このシナリオでは、ApigeeをバックエンドサービスAPIと共に使用しており、これはマシンツーマシン(M2M)アプリケーションを表しているため、クライアント資格情報フローを使用します。他のシナリオでは異なるフローが必要になる場合があります。

ログイン方法と、Apigee Edgeの呼び出しに使用できるアクセストークンの取得方法についての詳細は、「クライアントの資格情報フローを使ってAPIを呼び出す」をご覧ください。

アクセストークンを検証する

Auth0にアクセストークンを要求して受け取ったら、それを使用してEdgeでセットアップしたAPIプロキシを呼び出すことができます。

アクセストークンを使用する場合、Apigee Edgeはまず、トークンを検証します。

Auth0のアクセストークンはJSON Web Token(JWT)なので、Apigee EdgeのVerifyJWTポリシーを活用してこれを実行できます。詳細については、Apigeeで「RS256アルゴリズムで署名されたJWTの検証ポリシー」をお読みください。

Apigee Edgeは何か生じる前にトークンを検証します。トークンが拒絶された場合、すべての処理が中断し、Edgeはクライアントにエラーを返します。

テスト

実装をテストするには、Auth0が発行したアクセストークンをヘッダーに含めたHTTP POST呼び出しをApigee Edgeに送信します。この方法は、Apigeeで「保護されたAPIの呼び出し」を参照してください。

成功の応答を受け取ったら、トークンを抽出し、必要な/要求されたユーザークレームが含まれているかを確認します。