認証と認可の詳細

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

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

ホテル予約の簡略化された例を考えてみましょう。ホテルに到着すると、フロントの係員が予約を確認するために身分証明書の提示を求めます。ID でホテルへの認証を行います。フロントの係員からホテルキーを受け取ります。このキーを使用すると、ホテルの客室、ジム、ビジネス センターなどの特定のリソースにアクセスできます。ホテルキーを使用すると、これらのリソースにアクセスする権限が付与されます

プロセスの概要

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

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

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

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

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

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

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

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

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

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

重要な用語

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

認証

ユーザーまたはユーザーの代理として動作するアプリであるプリンシパルが、そのプリンシパルが主張する本人であることを確認する行為。Google Workspace アプリを作成する際は、次の認証タイプについて知っておく必要があります。

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

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

Credential

ソフトウェア セキュリティで使用される識別形式。認証の観点から見ると、認証情報は通常、ユーザー名とパスワードの組み合わせです。Google Workspace API の認可に関して、通常、認証情報はアプリ デベロッパーと認証サーバーの間でのみ認識される一意のシークレット文字列などの形式の ID です。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 同意画面を構成して、ユーザーがアプリによるデータへのアクセスを理解し、承認できるようにします。