認証と認可の詳細

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

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

ホテル予約の簡略化された例を以下に示します。ホテルに到着すると、フロントデスクの係員が予約を確認するために身分証明書を要求します。身分証明書はホテルでの本人確認に使用されます。フロントデスクの係員からホテルキーを受け取ります。このキーを使用すると、ホテルの客室、ジム、ビジネス センターなどの特定のリソースにアクセスできます。ホテルキーは、それらのリソースにアクセスするための認証です。

プロセスの概要

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

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

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

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

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

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

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

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

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

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

重要な用語

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

認証

プリンシパル(ユーザーまたはユーザーに代わって動作するアプリ)が、その身元を偽っていないことを確認する行為。Google Workspace アプリを作成する場合は、次のタイプの認証に注意する必要があります。

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

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

Credential

ソフトウェア セキュリティで使用される身分証明書の一種。認証に関して、認証情報は多くの場合、ユーザー名とパスワードの組み合わせです。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 同意画面を構成して、アプリがユーザーのデータにアクセスする権限をユーザーが理解し、承認できるようにします。