この記事について
この記事では以下のサンプルWebアプリを使ってFirebae AuthenticationのGoogle IDプロバイダー連携を試してみる。
GitHub - firebase/quickstart-js: Firebase Quickstart Samples for Web
Firebase Quickstart Samples for Web. Contribute to firebase/quickstart-js development by creating an account on GitHub.
構成イメージ
クライアントIDの置き換え
./auth/google-credentials.html内のクライアントIDをGCPプロジェクトのOAuth 2.0クライアントIDに置き換える。
変更前
<!-- **********************************************
* TODO(DEVELOPER): Use your Client ID below. *
********************************************** -->
<meta name="google-signin-client_id" content="**YOUR_CLIENT_ID**">
エラー 401: invalid_client
クライアントIDがFirebase Projectのものと一致しない場合、401 invalid_clientエラーとなり認証されない。
The OAuth client was not found.
このアプリのデベロッパーの場合は、エラーの詳細をご確認ください。
エラー 401: invalid_client
Firebaseアプリのデプロイ
$ cd quickstart-js/auth/
$ firebase deploy
Firebaseアプリへのアクセス
デプロイしたFirebaseアプリにアクセスする。
この時点ではまだサインアウトされた状態。
URL:
https://firebase-project-id.web.app/google-popup.html
サインイン
"SIGN IN WITH GOOGLE"ボタンをおしてサインインするとGoogle IDのプロファイルとともに発行されたBearerトークンが表示される。
このアクセストークンを使ってAPI Gatewayを叩くと認証され結果が返ってくる。
$ curl -X GET -H "Authorization: Bearer $TOKEN" https://firebase-project-id.an.gateway.dev/greetings/2
{"category":"Hola","id":2,"name":"es"}
Firebase Authenticationでの見え方
アプリにサインインしたユーザーは自動的にFirebase Authenticationに登録される。
アプリにログインできるドメインの制限
OAuth 同意画面で「内部」,「外部」を選ぶことができる。
https://console.cloud.google.com/apis/credentials/consent
内部を選ぶとFirebaseプロジェクトの上位となるCloud Identityに限定してアプリを公開できるようだ。
Setting up your OAuth consent screen - Google Cloud Platform Console ヘルプ
You must configure an OAuth consent screen before using an OAuth 2.0 client ID. This article describes OAuth consent screen settings and their impact on how you...
User type
The user type setting impacts your app's potential audience.
...
Internal
Projects associated with a Google Cloud Organization can configure Internal users to limit authorization requests to members of the organization. For more information about migrating a project into a Google Cloud Organization resource, see Migrating projects into an organization.
...
An org_internal authorization error is displayed when authorization is requested from users outside the Google Cloud project's parent.