認証と認可の詳細

認証と認可は、それぞれ ID とリソースへのアクセスを確認するために使用されるメカニズムです。このドキュメントでは、アプリに認証と認可を実装する前に知っておくべき主な用語について説明します。

認証は、リクエストを行うユーザーを識別します。承認では、リクエスト送信者がアクセスできるリソースとアクセスレベルを特定します。認証は承認の前提条件となります。最初にリクエスト元の ID を確立しない限り、アクセスするリソースを決定することはできません。詳細な定義については、重要な用語のセクションをご覧ください。

以下は、ホテル予約の簡単な例です。ホテルに到着すると、フロントのスタッフが予約を確認するために身分証明書を要求します。身分証明書でホテルの認証が行われます。フロントの係員が ホテルのキーを渡しますこのキーを使用すると、ホテルの客室、ジム、ビジネス センターなど、ホテルの特定のリソースにアクセスできるようになります。ホテルキーは、これらのリソースへのアクセスを承認するものです。

プロセスの概要

次の図は、Google Workspace API の認証と認可の手順の概要を示しています。

認証と認可の実装の大まかな手順
図 1. 認証と認可の実装手順の概要
  1. Google Cloud プロジェクトとアプリを構成する: 開発中に Google Cloud コンソールでアプリを登録し、認可スコープとアクセス認証情報を定義して、API キー、エンドユーザー認証情報、またはサービス アカウントの認証情報でアプリを認証します。

  2. アクセスのためにアプリを認証する: アプリの実行時に、登録済みのアクセス認証情報が評価されます。アプリがエンドユーザーとして認証されている場合、ログイン プロンプトが表示されることがあります。

  3. リソースをリクエストする: アプリが Google リソースにアクセスする必要がある場合、アプリは以前に登録した関連するアクセス スコープを使用して Google にリクエストします。

  4. ユーザーの同意を求める: アプリがエンドユーザーとして認証されている場合、Google は OAuth 同意画面を表示し、ユーザーはリクエストされたデータにアプリへのアクセスを許可するかどうかを決定できます。

  5. リソースに対する承認済みリクエストを送信する: ユーザーがアクセス スコープに同意すると、App は認証情報とユーザーが承認したアクセス スコープをリクエストにバンドルします。リクエストが Google 認可サーバーに送信され、アクセス トークンが取得されます。

  6. Google がアクセス トークンを返す: アクセス トークンには、付与されているアクセス スコープのリストが含まれます。返されたスコープのリストが、リクエストされたアクセス スコープよりも制限されている場合、アプリはトークンによって制限されている機能を無効にします。

  7. リクエストされたリソースにアクセスする: アプリは Google からアクセス トークンを使用して関連する API を呼び出し、リソースにアクセスします。

  8. 更新トークンを取得する(省略可): 1 つのアクセス トークンの有効期間を超えて Google API にアクセスする必要があるアプリは、更新トークンを取得できます。

  9. 追加のリソースをリクエストする: 追加のアクセス権が必要な場合、アプリは新しいアクセス スコープを付与するようユーザーに要求し、アクセス トークンを取得するための新しいリクエストを作成します(ステップ 3 ~ 6)。

重要な用語

認証と認可に関連する用語は次のとおりです。

認証

プリンシパル(ユーザーやユーザーの代理アプリ)が、本人であることを保証すること。Google Workspace アプリを作成する際には、次の種類の認証に注意してください。

ユーザー認証
アプリに対するユーザーの認証(ログイン)動作。通常、ユーザー認証はログイン プロセスを通じて実行されます。ログイン プロセスで、ユーザーはユーザー名とパスワードの組み合わせを使用して、アプリに対して本人確認を行います。Google でログインを使用して、アプリにユーザー認証を組み込むことができます。
アプリの認証
アプリを実行しているユーザーに代わって、Google サービスに対して直接認証を行うアプリの動作。通常、アプリの認証は、アプリのコードで事前に作成された認証情報を使用して実行されます。
承認

プリンシパルがデータにアクセスする、またはオペレーションを実行するために必要な権限(権限)。承認の動作は、アプリに記述したコードによって実行されます。このコードは、アプリがユーザーの代わりに動作することをユーザーに通知し、許可されている場合はアプリの固有の認証情報を使用して、データへのアクセスや操作に使用するアクセス トークンを Google から取得します。

Credential

ソフトウェア セキュリティで使用される ID の形式。認証では、多くの場合、認証情報はユーザー名とパスワードの組み合わせです。Google Workspace API の認可においては、認証情報は通常、アプリ デベロッパーと認証サーバー間でのみ知られている一意のシークレット文字列など、なんらかの形式の識別です。Google では、API キー、OAuth 2.0 クライアント ID、サービス アカウントの認証情報をサポートしています。

API キー
公開データへのアクセスをリクエストするために使用する認証情報。Maps API を使用して提供されたデータや、Google Workspace の共有設定内の [インターネット上のすべてのユーザー] で共有された Google Workspace ファイルなどが該当します。
OAuth 2 クライアント ID
ユーザー所有データへのアクセスをリクエストするために使用される認証情報。これは、Google Workspace API を使用してデータへのアクセスをリクエストする際に使用されるメインの認証情報です。この認証情報にはユーザーの同意が必要です。
クライアント シークレット
アプリケーションと認可サーバーのみが認識する必要がある文字列。クライアント シークレットは、承認されたリクエスタにのみトークンを付与することで、ユーザーのデータを保護します。暗号化されていないクライアント シークレットはアプリに含めないでください。クライアント シークレットは安全に保管することをおすすめします。詳細については、クライアント認証情報を安全に処理するをご覧ください。
サービス アカウント キー
Google サービスへの承認を取得するためにサービス アカウントによって使用されます。
サービス アカウント
サーバー間のやり取りに使用される認証情報(たとえば、なんらかのデータへのアクセスまたはなんらかのオペレーションを行うプロセスとして実行されるフェースレス アプリなど)。サービス アカウントは通常、クラウドベースのデータとオペレーションにアクセスするために使用されます。 ただし、ドメイン全体の権限の委任と併用すると、ユーザーデータにアクセスできます。
範囲

アプリに付与するリソースまたはアクションへのアクセスレベルを定義する OAuth 2.0 URI 文字列。Google Workspace の場合、認可スコープ URI には Google Workspace のアプリ名、アクセスするデータの種類、アクセスレベルが含まれます。アプリのユーザーは、リクエストされたスコープを確認して付与するアクセス権を選択できます。Google の認証サーバーは、許可されたスコープをアクセス トークンでアプリに返します。詳しくは、アプリのスコープを選択する方法をご覧ください。

認可サーバー

アクセス トークンを使用して、アプリがリクエストしたデータとオペレーションへのアクセス権を付与するための Google のサーバー。

認可コード

認可サーバーから送信されるコード。アクセス トークンの取得に使用されます。コードは、アプリケーションの種類がウェブサーバー アプリまたはインストール済みのアプリである場合にのみ必要です。

アクセス トークン

Google Workspace API へのアクセス権を付与するトークン。1 つのアクセス トークンから、複数の API へのアクセスにさまざまな程度(スコープ)を付与できます。アプリの認可コードがアクセス トークンをリクエストし、それを使用して Google Workspace API を呼び出します。

リソース サーバー

アプリが呼び出す API をホストするサーバー。

OAuth 2.0 フレームワーク

アプリが「安全な委任アクセス権」、つまりアプリのユーザーに代わってデータとオペレーションへのアクセス権を提供するために使用できる標準。アプリで使用する認証と認可のメカニズムは、OAuth 2.0 フレームワークの実装を表します。

プリンシパル

リソースへのアクセス権を付与できるエンティティ(ID とも呼ばれます)。Google Workspace API は、ユーザー アカウントとサービス アカウントの 2 種類のプリンシパルをサポートします。詳細については、プリンシパルをご覧ください。

データの種類

認証と認可のコンテキストでは、データ型とはアプリがアクセスしようとしているデータを所有するエンティティを指します。次の 3 つのデータ型があります。

パブリック ドメインのデータ
誰でもアクセスできるデータ(Google マップのデータなど)。このデータは通常、API キーを使用してアクセスします。
エンドユーザー データ
特定のエンドユーザーまたはグループに属するデータ(特定のユーザーの Google ドライブ ファイルなど)。通常、このデータ型には OAuth 2 クライアント ID またはサービス アカウントを使用してアクセスします。
クラウドデータ
Google Cloud プロジェクトが所有するデータ。通常、このデータ型にはサービス アカウントがアクセスします。
ユーザーの同意

アプリのユーザーに、データへのアクセスとユーザーに代わってオペレーションの実行を許可するよう求める承認ステップ。

アプリケーションの種類

作成するアプリのタイプGoogle Cloud コンソールを使用して認証情報を作成する場合、アプリケーションの種類を選択するよう求められます。アプリケーションの種類には、ウェブ アプリケーション(JavaScript)、Android、Chrome アプリ、iOS、テレビ、制限付き入力デバイス、デスクトップ アプリ(「インストール済みアプリ」とも呼ばれます)、ユニバーサル Windows プラットフォーム(UWP)があります。

サービス アカウント

人間以外のユーザーを表す特別なタイプの Google アカウント。データにアクセスするには認証を行い、認可を受ける必要があります。アプリケーションは Google API の呼び出しにサービス アカウントの ID を使用するため、ユーザーは直接関与しません。サービス アカウントを使用してユーザーデータにアクセスすることはできません。Workspace API を使用して独自にアクセスします。ただし、サービス アカウントはドメイン全体の権限委任を実装することで、ユーザーデータにアクセスできます。詳細については、サービス アカウントについてをご覧ください。

ドメイン全体の権限の委任

Google Workspace 組織内のユーザーに代わってユーザーデータにアクセスするアプリケーションを認可できる管理機能。ドメイン全体の委任を使用すると、ユーザーデータに対する管理者関連のタスクを実行できます。この方法で権限を委任する場合、Google Workspace 管理者は OAuth 2.0 でサービス アカウントを使用します。この機能により、ドメイン全体の権限の委任を有効にできるのは特権管理者に限られます。詳細については、ドメイン全体の権限をサービス アカウントに委任するをご覧ください。

次のステップ

アプリの OAuth 同意画面を構成して、アプリがユーザーのデータに対してどのようなアクセス権を持っているかを理解し、承認できるようにします。