あなたのアプリのデザインとそれが認証を扱う方法は深く相互依存しています。このセクションでは、Marketplaceアプリケーションの認証がどのように機能するかについて説明します。
あなたのアプリは、ユーザーが再認証する必要がないようにシングルサインオンを使用する必要があります。シングルサインオンを実装することで、アプリはGoogle APIとの統合が向上し、ユーザーがインストールして使用するのが容易になります。
OAuth2とスコープ
すべてのG Suiteアプリケーションは、OAuth 2.0を使用して認証と承認を処理します。詳細については、Google Identity Cookbook – OAuth 2.0をご覧ください 。
あなたのアプリは1つ以上のスコープを指定します:アクセスする必要があるリソースを識別する文字列。これらのスコープは 、リソースへのユーザーのアクセスを保護するためにトークンのセットとともに使用されます。スコープは、単一のリソースまたはリソースのグループへの特定のアクセス形式を表します。たとえば、次のようになります。
- Googleドライブのファイルを読み込む
- Googleカレンダーのデータを読み書きする
- ユーザーアカウントを作成する
リソースへのユーザーのアクセスは、アクセストークンを使用して許可されます。アプリのアーキテクチャスタイルに応じて、さまざまな方法でアクセストークンを取得できます(下記参照)。Webサービスの認証呼び出しを明示的に記述することはできますが、通常は多くのプログラミング言語で使用できる Google APIクライアントライブラリを使用してアプリを単純化する必要があります。また、多くのクライアントサイドJavaScriptアプリケーションでは、 [ Google+ログイン ]ボタンを含めたり、Google APIクライアントJavaScriptライブラリを使用するだけで、ほとんどのプロセスを処理できます。
アプリケーションの建築様式
Google Marketplaceアプリは、次の3つのアーキテクチャスタイルに分類できます。
- Webサーバーアプリケーション:これらはサーバー側で実行され、サービスアカウントを使用したオフラインアクセス認証フローを含むことがよくあります(下記参照)
- クライアントサイドのアプリ:ブラウザで実行されるJavaScriptアプリです。[ログイン]ボタンを使用して認証情報をキャッシュすることがよくあります
- サービスアカウント:これらのアプリは、(a)管理タスクとシステム間の統合、または(b)ウェブサーバーアプリケーションのオフラインアクセスのサポートをユーザーに偽装します。
これらの各スタイルには、次のセクションで説明するように、関連する認証フローがあります。
認証フロー
以下では、定義された各アーキテクチャー・スタイルの許可フローについて説明します。
Webサーバーアプリケーション
PHP、Java、Python、Rubyなどの言語を使用するWebサーバーアプリケーションは、適切なGoogle APIクライアントライブラリを使用して承認を処理する必要があります。承認シーケンスは、アプリがブラウザをGoogle URLにリダイレクトするときに開始されます。URLには、要求されているアクセスのタイプを示すクエリパラメータが含まれています。成功した場合は、アクセストークンと更新トークンをアプリが交換できる認証コードが返されます。
オフラインアクセスを実装するアプリは、このフローを使用してGoogle IDや電子メールなどの識別情報を取得する必要があります。アクセストークンは返されますが、無視することができます。その後、アプリはユーザーIDを抽出し、その後のすべての呼び出しをサービスアカウントフローを使用して行う必要があります。
詳細については、「Webサーバーアプリケーション用のOAuth 2.0の使用」を参照してください。
クライアントサイド(JavaScript)アプリケーション
クライアント側のJavaScriptアプリはウェブブラウザで動作し、JavaScriptのGoogle APIクライアントライブラリを使用して承認を処理する必要があります。承認シーケンスは、アプリがブラウザをGoogle URLにリダイレクトするときに開始されます。URLには、要求されているアクセスのタイプを示すクエリパラメータが含まれています。成功した場合、レスポンスにはアクセストークンが含まれます。アクセストークンは、クライアントがGoogle API要求にそれを含める前に検証する必要があります。トークンが期限切れになると、アプリはそのプロセスを繰り返します。
このプロセスの一部を簡略化するために、クライアントライブラリに加えてGoogle+ログインボタンを使用することもできます。Google+ログインボタンは、シーケンスを開始し、ブラウザをGoogle URLにリダイレクトするだけでなく、必要に応じて新しいアクセストークンを自動的に生成するのに役立ちます。 詳細については、クライアント側アプリケーションにOAuth 2.0を使用するをご覧ください。
サービスアカウント
一部のGoogle Marketplaceアプリはオフラインアクセスを実装しています。ユーザーがログインしていないときにユーザーの代理で処理を実行できます。これらのアプリはサービスアカウントを使用し てユーザーを偽装し、ユーザーに代わってリソースにアクセスします。このタイプのアプリはGoogle APIコンソールで設定されます。秘密鍵とクライアントIDはサーバーに安全に保存する必要があります。上記の「Webサーバーアプリケーション」で説明したように、アプリケーションはアクセストークンからユーザーIDも取得する必要があります。
アプリは、秘密鍵、クライアントID、およびユーザーIDを使用して、Google OAuth 2.0認証サーバーにアクセストークンを要求します。その後、アプリケーションはトークンを使用してGoogle APIにアクセスできます。トークンが期限切れになると、アプリケーションはそのプロセスを繰り返します。 詳細については、サービスアカウントのマニュアルを参照してください。