認証方法の選択

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

API キー

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

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

認証情報は有効期間の短いトークンや署名付きリクエストを使用し、リクエスト ヘッダーで送信されますが、それとは異なり、クライアントは API キーをクエリ パラメータとして送信します。クエリ パラメータが HTTPS で暗号化されるとしても、API キーは安全ではありません。たとえば、各リクエストの URL 全体がクリアテキストでサーバーログに保存されている可能性があります。API 呼び出しにユーザーデータが含まれる場合は、セキュリティ上の理由により、API キーを単独で使用しないでください。API キーは、以下で説明するいずれかの認証方法とともに使用できます。

API キーの保護や API キーに対する制限の追加に関するベスト プラクティスについては、API キーの使用をご覧ください。「API キーの使用」は Google API を使用するクライアントを対象としていますが、これらのベスト プラクティスは、Endpoints Frameworks を使用して作成した API にも適用されます。

使用例

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

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

Firebase Authentication

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

Firebase のクライアント ライブラリは、ユーザーが正常にログインした後、秘密鍵を使用して JSON ウェブトークン(JWT)に署名します。Endpoints Frameworks は、JWT が Firebase によって署名されていること、Firebase アプリケーションを識別する JWT 内の「iss」(issuer)クレームがアノテーションの issuer 設定と一致することを検証します。

使用例

Firebase 認証は他の Firebase サービスと緊密に統合されているため、Firebase を使用するモバイルアプリやウェブアプリに適しています。Firebase Auth による認証をご覧ください。

Auth0

Auth0 は、ID プロバイダ、プラットフォーム、スタック、デバイスに依存することなく、アプリと API に対して認証と承認を行うサービスです。

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

Auth0 に用意されているクライアント ライブラリは、ユーザーがログインした後、JWT を生成してそれに署名します。Endpoints Frameworks は、JWT が Auth0 によって署名されていること、Auth0 アプリケーションを識別する JWT 内の「iss」クレームがアノテーションの issuer 設定と一致することを検証します。

使用例

Auth0 は、コンシューマ向けおよびエンタープライズ向けのウェブアプリやモバイルアプリに適しています。詳細については、Auth0 による認証をご覧ください。

Google ID トークン認証

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

ユースケース

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

詳細については、Google ID トークンによる認証をご覧ください。

JWT とサービス アカウント

JSON ウェブトークン(JWT)は一般的に、接続されているアプリケーションの間でクレームやアサーションを共有するために使用されます。サービス アカウントを表す JWT は、以下のいずれかによって署名されます。

  • サービス アカウント。

  • Google の承認サービス(Google 承認サービスによって署名された JWT は、Google ID トークンと呼ばれます)。

サービス アカウントによって署名された JWT を使用してリクエストを認証する方が簡単な場合もありますが、多数のサービス アカウントがある場合や、他者が所有しているサービス アカウントから認証情報を受け入れる場合は、Google ID トークンを使用することをおすすめします。Google ID トークンを使用する場合、https://accounts.google.com または accounts.google.com をすべてのサービス アカウントの発行者として許可するだけで済みます。

使用例

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