外部 ID を使用してユーザーを認証する
このクイックスタートでは、Identity-Aware Proxy(IAP)と外部 ID でアプリを保護する方法について説明します。IAP と Identity Platform を組み合わせることで、Google アカウントだけでなく、OAuth、SAML、OIDC など、さまざまな ID プロバイダを使用してユーザーの認証を行うことができます。
このクイックスタートでは、Facebook 認証を使用して App Engine のサンプルアプリを保護します。
始める前に
必要なロール
このクイックスタートを完了するために必要な権限を取得するには、プロジェクトに対する次の IAM ロールを付与するよう管理者に依頼してください。
-
プロジェクト作成者 (
roles/resourcemanager.projectCreator) -
App Engine 管理者(
roles/appengine.appAdmin) -
Firebase Authentication 閲覧者 (
roles/firebaseauth.viewer) -
IAP ポリシー管理者 (
roles/iap.admin) -
Compute 閲覧者 (
roles/compute.viewer) -
Identity Platform 管理者 (
roles/identityplatform.admin)
ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。
必要な権限は、カスタム ロールや他の事前定義 ロールから取得することもできます。
コンソールのプロジェクト セレクタページで、プロジェクトを選択または作成します。 Google Cloud Google Cloud
プロジェクトを選択または作成するために必要なロール
- プロジェクトを選択する: プロジェクトの選択には特定の IAM ロールは必要ありません。ロールが付与されているプロジェクトを選択できます。
-
プロジェクトを作成する: プロジェクトを作成するには、プロジェクト作成者ロール
(
roles/resourcemanager.projectCreator)が必要です。これにはresourcemanager.projects.create権限が含まれています。詳しくは、ロールを付与する方法をご覧ください。
Google Cloud CLI をインストールします。 インストール後、 初期化するには、次のコマンドを実行して Google Cloud CLI を初期化します。
gcloud init外部 ID プロバイダ(IdP)を使用している場合は、まず フェデレーション ID を使用して gcloud CLI にログインする必要があります。
プロジェクト用に App Engine を初期化します。
gcloud app create --project=project-id
Node.js の現在のバージョンをインストールします。
Firebase コマンドライン ツールをインストールします。
npm install -g firebase-tools
API を有効にする
まず、Identity Platform を有効にします。
コンソールで Identity Platform の Marketplace ページに移動します。Google Cloud
[Identity Platform を有効化] をクリックします。コンソールに Identity Platform のページが表示されます。 Google Cloud
次に、IAP を有効にします。
コンソールで [IAP] ページに移動します。 Google Cloud
Identity Platform で使用したものと同じプロジェクトを選択します。別のプロジェクトを使用することはできません。
[API を有効にする] をクリックします。
サンプルコードをダウンロードしてデプロイする
このクイックスタートのコードには、クライアント アプリと認証アプリの 2 つのコンポーネントがあります。
クライアント アプリは IAP で保護されています。認証されていないユーザーからリクエストを受信すると、認証アプリにリクエストをリダイレクトし、ユーザーの本人確認を行います。ユーザーがログインに成功すると、認証アプリが JSON Web Token(JWT)を返します。デモ用のため、ここではクライアント アプリに JWT が表示されます。
まず、コードをダウンロードして、クライアント アプリをデプロイします。
サンプルコードをダウンロードします。
git clone https://github.com/GoogleCloudPlatform/iap-gcip-web-toolkit.git
クライアント アプリのディレクトリに移動します。
cd iap-gcip-web-toolkit/sample/app依存関係をインストールします。
npm installクライアント アプリを App Engine にデプロイします。
npm run deployクライアント アプリが次の URL で起動します。
https://[PROJECT-ID].appspot.com
次に、認証アプリをデプロイします。
認証アプリのディレクトリに移動します。
cd ../authui-firebaseui依存関係をインストールします。
npm install export NODE_OPTIONS=--openssl-legacy-providerFirebase Hosting を使用するように認証アプリを構成します。IAP で保護されたクライアント アプリを含む Google Cloud プロジェクトの Google Cloudプロジェクト ID を指定します。
firebase use project-id
アプリをデプロイします。
npm run deploy認証アプリが次の URL で起動します。
https://[PROJECT-ID].firebaseapp.com
これで、クライアント アプリと認証アプリがデプロイされました。次に、Identity Platform と IAP を構成します。
Identity Platform を設定する
IAP は Identity Platform を使用して外部 ID の認証を行います。このクイックスタートでは Facebook を例にしていますが、Identity Platform はさまざまな ID プロバイダに対応しています。
Facebook アプリを作成する
Facebook の認証情報でユーザーの認証を行うには、アプリ ID とアプリのシークレット が必要です。
Meta for Developers にログインします。Facebook アカウントがない場合は、アカウントを作成します。
Facebook の マイアプリ ページに移動します。
[アプリを作成] をクリックします。
左側のメニューで、[Settings] > [Basic] の順に選択します。
[Privacy Policy URL] ボックスに、有効な URL を入力します。アプリをあとで本番環境にデプロイする場合は、独自のプライバシー ポリシーを参照するように URL を更新できます。
アプリ ID とアプリ シークレットをメモします。これらは次のセクションで必要になります。
Facebook を ID プロバイダとして追加する
認証に Facebook を使用するように Identity Platform を構成します。
コンソールで [ID プロバイダ] ページに移動します。 Google Cloud
[プロバイダを追加] をクリックします。
プロバイダのリストから Facebook を選択します。
前のセクションで取得したアプリ ID とアプリ シークレットを入力します。
[保存] をクリックします。
OAuth リダイレクト URI を構成する
Facebook が認証アプリからのリクエストの処理を完了したときに、リダイレクト先の URI が必要になります。
Facebook の マイアプリ ページに戻り、アプリを選択します。
左側のメニューで、[商品] > [商品を追加] をクリックします。
Facebook Login プロダクトを選択して、[Set up] をクリックします。
左側のナビゲーション メニューで [Settings] を選択します(ガイド付きのクイックスタート フローを完了する必要はありません)。
[Valid OAuth Redirect URIs] ボックスに、リダイレクト先の URI を入力します。
https://project-id.firebaseapp.com/__/auth/handler
この URI は、Identity Platform プロバイダの構成ページでも確認できます。
[Save Change] をクリックします。
これで、Identity Platform の設定が完了しました。認証に IAP を使用するように構成されました。
IAP を有効にして外部 ID を使用する
コンソールで [IAP] ページに移動します。 Google Cloud
[アプリケーション] タブをクリックします。
以前にデプロイした App Engine サンプルアプリを選択します。[公開済み] カテゴリに、次のような URL が表示されます。
https://project-id.appspot.com
[IAP] 列で、スイッチをオンに切り替えます。
サイドパネルで、[承認には外部 ID を使用します] の [開始] をクリックします。
[ログインページ] で、[自分で提供する] を選択します。
次のように、[認証 URL] フィールドに認証アプリの URL を入力します。
https://project-id.firebaseapp.com/
URL を入力すると、 Google Cloud コンソールに API キーが自動的に 追加されます。
プロジェクト名のチェックボックスをオンにします。ID プロバイダとして Facebook が表示されるはずです。
[保存] をクリックします。
これで IAP の設定が完了しました。
ユーザー認証をテストする
IAP がアプリを保護し、Facebook でユーザーを認証していることをテストするには:
ブラウザで、App Engine クライアント アプリに移動します。
https://project-id.appspot.com
読み込み画面が表示された後、Identity Platform のログインページにリダイレクトされます。
画面の手順に従って Facebook で認証を行います。
クライアント アプリにリダイレクトされ、Identity Platform から返された JWT が表示されます。
完全にログアウトするには、作成したサンプルアプリと Facebook からログアウトする必要があります。Firebase は Facebook とのセッションを 1 時間確立するため、両方のアプリからログアウトする必要があります。詳細については、ユーザー セッションを管理するをご覧ください。
これで完了です。App Engine にアプリがデプロイされ、IAP と外部 ID で保護されました。
クリーンアップ
このページで使用したリソースについて、 Google Cloud アカウントに課金されないようにするには、 次の手順を実施します。
- コンソールで [**リソースの管理**] ページに移動します。 Google Cloud
- プロジェクト リストで、削除するプロジェクトを選択し、[削除] をクリックします。
- ダイアログでプロジェクト ID を入力し、 [Shut down] をクリックしてプロジェクトを削除します。
作成した Facebook アプリを削除することもできます。
次のステップ
- FirebaseUI で認証 UI をカスタマイズするか、カスタム UI をゼロから作成する。
- Identity Platform で ID プロバイダを構成する方法を学習する。
- Identity Platform マルチテナンシーを使用して、ユーザーと構成からなる独自のサイロの作成方法を学習する。