認証方法の選択

Cloud Endpoints は、さまざまなアプリケーションや利用方法に適した複数の認証方法をサポートしています。Extensible Service Proxy(ESP)は、サービス構成で指定した認証方法を使用して、受信リクエストを API バックエンドに渡す前に検証します。このドキュメントでは、サポートされる各認証方法の概要と利用方法について説明します。

API キー

API キーは、割り当て、課金、モニタリングのために Google Cloud プロジェクトを識別する暗号化された単純な文字列です。デベロッパーは、Google Cloud コンソールでプロジェクトの API キーを生成し、このキーをクエリ パラメータとしてすべての API 呼び出しに埋め込みます。

サービス構成で API キーを必須として指定すると、ESP はその API キーを使用して、API キーが関連付けられている Google Cloud プロジェクトを検索します。現在お使いの Google Cloud プロジェクトまたは API が有効になっている他の Google Cloud プロジェクトで API キーが生成されていない場合、ESP はリクエストを拒否します。詳しくは、API キーで API アクセスを制限するをご覧ください。

有効期間の短いトークンや署名付きリクエストを使用する認証情報とは異なり、API キーはリクエストの一部であるため、中間者攻撃に対して脆弱で、安全性が低いとみなされます。API キーは、以下で説明するいずれかの認証方法とともに使用できます。API 呼び出しにユーザーデータが含まれる場合は、セキュリティ上の理由により、API キーを単独で使用しないでください。

使用例

割り当てなどの Endpoints 機能を使用する場合、クライアント アプリケーションに関連付けられている Google Cloud プロジェクトを Endpoints が識別できるように、リクエストのたびに API キーを渡す必要があります。

API キーの詳細については、API キーを使用する理由と条件をご覧ください。

Firebase Authentication

Firebase Authentication には、モバイルアプリやウェブアプリでユーザーを認証するためのバックエンド サービス、SDK、ライブラリが用意されています。Firebase Authentication は、Google、Facebook、Twitter、GitHub などのさまざまな認証情報を使用してユーザーを認証します。

Firebase のクライアント ライブラリは、ユーザーが正常にログインした後、秘密鍵を使用して JSON Web Token(JWT)に署名します。ESP は、JWT が Firebase によって署名されていること、Firebase アプリケーションを識別する JWT 内の iss(issuer)クレームがサービス構成の x-google-issuer 設定と一致することを検証します。

使用例

API 呼び出しにユーザーデータが含まれ、ユーザーがモバイルアプリやウェブアプリなどからユーザー インターフェースを介して API とやり取りする場合は、Firebase の使用をおすすめします。詳しくは、Firebase を使用したユーザー認証をご覧ください。

Auth0

Auth0 は、アプリケーションと API に対して認証とアクセス許可を行うサービスで、ID プロバイダ、プラットフォーム、スタック、デバイスに依存しません。

Auth0 では、多数のプロバイダと Security Assertion Markup Language の仕様がサポートされています。また、ウェブアプリやモバイルアプリでユーザーを認証するための、バックエンド サービス、SDK、ユーザー インターフェースのライブラリが用意されています。Auth0 は、複数のサードパーティ ID プロバイダと統合することも、カスタム ユーザー アカウント管理を提供することもできます。

Auth0 に用意されているクライアント ライブラリは、ユーザーがログインを済ませると、JWT を生成してそれに署名します。ESP は、JWT が Auth0 によって署名されていること、Auth0 アプリケーションを識別する JWT 内の iss クレームがサービス構成の x-google-issuer 設定と一致することを検証します。

使用例

Auth0 は、一般消費者や企業向けのウェブアプリ、モバイルアプリに適しています。詳しくは、ユーザーの認証の Auth0 をご覧ください。

Google ID トークン認証

Google ID トークンを使用した認証では、ユーザーは Google アカウントでログインすることで認証されます。認証が済むと、ユーザーはすべての Google サービスにアクセスできます。Google ID トークンを使用して、Google API や Endpoints で管理されている API を呼び出せます。ESP は、公開鍵を使用して Google ID トークンを検証し、JWT 内の iss クレームが https://accounts.google.com であることを確認します。

使用例

ユーザー全員が Google アカウントを所有している場合は、Google ID トークンを使用した認証が適しています。たとえば、API が Google ドライブ コンパニオンなどの Google アプリケーションに関連付けられていれば、Google ID トークン認証を選択できます。Google ID トークン認証では、ユーザーは Google アカウントでログインすることで認証されます。認証が済むと、ユーザーはすべての Google サービスにアクセスできます。詳しくは、ユーザーを認証するための Google ID トークンの使用をご覧ください。

サービス アカウント

API にリクエストを送信するサービスを識別するには、サービス アカウントを使用します。呼び出し元のサービスは、サービス アカウントの秘密鍵を使用して安全な JSON Web Token(JWT)に署名し、署名した JWT をリクエストに含めて API に送信します。

使用例

JWT とサービス アカウントはマイクロサービスに適しています。詳しくは、サービス間の認証をご覧ください。

カスタム認証

JSON ウェブトークンの RFC 7519 に準拠していれば、他の認証プラットフォームを使用してユーザーを認証できます。

詳しくは、ユーザーを認証するためのカスタム メソッドの使用をご覧ください。