メインコンテンツへスキップ
Google Cloud Endpoints (GCE) は API 管理システムで、API の作成、保守、保護に役立つ機能を提供します。GCE は OpenAPI を使用して、API のエンドポイント、入力と出力、エラー、セキュリティに関する説明を定義します。 OpenAPI 仕様の詳細については、GitHub 上の OpenAPI Specification リポジトリを参照してください。 このチュートリアルでは、Auth0 を使用して Google Cloud Endpoints を保護する方法について説明します。

前提条件

開始する前に、デプロイ済みの GCE API が必要です。まだ API を作成していない場合は、Google ドキュメントの Cloud Endpoints クイックスタート を完了してください。 この quickstart では、/airportName という単一のエンドポイントを持つシンプルな GCE API を作成します。このエンドポイントは、空港の 3 文字の IATA code から空港の名前を返します。

Auth0 で API を定義する

Auth0 Dashboard > Applications > APIs に移動し、新しい API を作成します。
Dashboard - API の作成 - 統合 - Google Endpoints
次の手順で使用するため、**API の**識別子 (上のスクリーンショットでは http://google_api) を控えておきます。

API Configuration を更新する

次に、GCE API の OpenAPI 設定ファイルを更新します。quickstart で作成したサンプル API では、このファイルは openapi.yaml になります。

セキュリティ定義を追加する

設定ファイルを開き、新しい securityDefinitions セクションを追加します。このセクションに、次のフィールドを含む新しい定義 (auth0_jwt) を追加します。
FieldDescription
authorizationUrl認可 URL です。"https://{yourDomain}/authorize" に設定します
flowOAuth2 セキュリティスキームで使用するフローです。有効な値は "implicit""password""application""accessCode" です。
typeセキュリティスキームのタイプです。有効な値は "basic""apiKey""oauth2" です
x-google-issuerクレデンシャルの発行元です。"https://{yourDomain}/" に設定します
x-google-jwks_uriJSON Web Token (JWT) の署名を検証するための公開鍵セットの URI です。"https://\{yourDomain}/.well-known/jwks.json" に設定します
x-google-audiencesAPI の識別子です。この値が、API に対して Auth0 Dashboard で定義した値と一致していることを確認してください。

エンドポイントを更新する

次に、前の手順で作成した securityDefinition を指定した security フィールドを追加して、エンドポイントを更新します。
paths:
  "/airportName":
    get:
      description: "Get the airport name for a given IATA code."
      operationId: "airportName"
      parameters:
        -
          name: iataCode
          in: query
          required: true
          type: string
      responses:
        200:
          description: "Success."
          schema:
            type: string
        400:
          description: "The IATA code is invalid or missing."
      security:
       - auth0_jwt: []
上記の例では、security フィールドにより、/airportName パスが auth0-jwt 定義で保護されることを GCE プロキシに伝えています。 OpenAPI の設定を更新すると、次のようになります。

API を再デプロイする

次に、設定変更を反映するため、GCE API を再デプロイします。Cloud Endpoints クイックスタート の手順に沿って進めている場合は、Google の Cloud Shell で次のコマンドを入力して再デプロイできます。
cd endpoints-quickstart/scripts
./deploy_api.sh

API をテストする

再デプロイしたら、セキュリティなしで API を再度呼び出します。 次のレスポンスが返されます。
{
 "code": 16,
 "message": "JWT validation failed: Missing or invalid credentials",
 "details": [
  {
   "@type": "type.googleapis.com/google.rpc.DebugInfo",
   "stackEntries": [],
   "detail": "auth"
  }
 ]
}
これがまさに期待どおりの結果です! 次に、Auth0 Dashboard で Google Endpoints API 定義の Test ページに移動し、Response の下にある をコピーします。 認可された状態でアクセスするには、Bearer {ACCESS_TOKEN} を指定した Authorization ヘッダーを付けて、API に GET リクエストを送信します。 これで完了です。