Firebase_Authentication
読む前の基礎知識
Firebase Authenticationとは
Googleが開発したFirebaseプロジェクトの機能の1つ。
この機能は、アプリやサービスと作成する際に面倒な認証を請け負ってくれる。
Session管理、パスワード管理やらの認証に関する面倒事を自前で作る必要がなくなる。
Firebase Authenticationを利用するサービスは、この機能から認証に成功したユーザーIDを連携してもらうだけでいい。
そのユーザーIDと自前サービスの会員IDなどを紐付ける形で利用していくことになる。
似た機能を持つサービスたち
Firebase Authenticationの利用手順・流れ
1. Firebaseプロジェクトを作成
2. Authenticateを開始
3. ログインに利用したいプロバイダを適宜追加(ex: email x password, Google, Twitter, ...)
4. クライアントサイドに、認証およびIDトークン取得を行うコードを記載
公式が用意してるSDK or UIを利用する
5. クライアントからバックエンドに対してIDトークンを送り、バックエンドで認証の検証を行うコードを記載
公式が用意してるSDK(ライブラリ)を利用する
6. バックエンドは、検証が失敗したら、クライアントからの要求を拒否する
QA
q.icon Firebase SDKとUIの違いは?
a.icon SDKはクライアント側で認証を実装するための大元の基盤ツール
UIは、SDKを元にして作られたライブラリ
SDKの方がUIのカスタマイズ性が高いけど、実装が面倒臭い
UIはカスタマイズ性が低い代わりに、面倒な実装をしなくて良くなる
q.icon getIdTokenっていう関数あるんだが、こいつは勝手にトークンの更新もしてくれる?
a.icon してくれる。期限切れ立った場合は、どこかに隠してるリフレッシュトークン使って新しいIDトークンをくれる。
関連
hr.icon
hr.icon
調査
Firebase Authentication SDK は、ベストプラクティスな認証機能を実装されており、開発者はSDKを使うことで意識することなく安全なユーザ管理を追加することができます
なるほど、SDKに全てお任せしていいんやなonigiri.w2.icon
たぶん、SDKが勝手にAuthentication本体サーバーとやり取りして、認証を行ってくれる感じなんだろうな
認証機能を実現するまでの流れ
Firebaseプロジェクトを作成
Authenticateを開始
必要なプロバイダを追加
js側でなんか必要なコードを書く
実行して動作確認
Firebase Authentication は、アプリに対してユーザーを認証するためのバックエンド サービス、使いやすい SDK、既製の UI ライブラリを提供します。
認証の裏側とクライアント・サーバー側で利用できるSDK、そして認証の際に出るポップアップ的なやつのUIライブラリ?が手に入るのかな?onigiri.w2.icon
FirebaseUI 認証機能
なんか知らんけど一番一般的なやつかも?onigiri.w2.icon
Firebase SDK 認証
UI認証とSDK認証の違いがわからんonigiri.w2.icon
Firebase Authenticationにおける基本的な認証の流れ
1. Firebase Authentication SDKが制御して、ユーザーの認証資格情報を得る
さまざまな手段がある(メアド/パスワード、グーグル、ツイッター、etc)
2. SDKは認証資格情報を受け取り、バックエンド(Firebase Authentication)に渡す
3. バックエンドは資格情報を受け取って、OKかどうかを返す
この時、他のバックエンドサービスでユーザーIDを確認できるよう、IDトークンを返却することも可能
追加でリフレッシュトークンも。
ここら辺のフロント側の実装は、やはりSDKが受け持ってくれるのだろう
Firebase Authentication with Identity Platformにアップグレードすると、多要素認証、ブロック機能、ユーザー アクティビティと監査ログ、SAML と一般的な OpenID Connect のサポート、マルチテナンシー、エンタープライズレベルのサポートなどの追加機能のロックが解除されます。
これはあれかな...アップグレードしないとOpenID Connect利用できないってことかなonigiri.w2.icon
OAuthトークンは標準でもらえるっぽいけど、IDトークンはアップグレードしないともらえない?
となるとバックエンドサービスでの認証はアップグレードしないといけなくなるかな
まあ試してみないとわからんな
最も簡単にFirebase Authenticationをアプリに導入する方法です。
「FirebaseUI Auth」とは、後述するFirebase Authentication SDKを基に作成されたライブラリで、利用者側はSDKを自ら呼び出す必要がなくなるという非常に便利なライブラリです。
公式では「ドロップイン認証ソリューション(※)」と呼ばれています。
※必要な設定項目を記述するだけで「UIから認証処理まで全て埋め込んでくれる」といった簡単に実装できることを指します
なるほどなるほどonigiri.w2.icon
UIとかもGoogleがデフォルトで用意してる認証機能的なのをくれるのね。なるほどねonigiri.w2.icon
FirebaseUI Authでは対応できないようなアプリ独自の処理を追加したい場合には、「Firebase SDK Authentication」の利用をおすすめします。
メリット
SDKを自ら呼び出すように実装するため、細かな処理まで利用者側がコントロールできるようになります。
デメリット
ログインボタン等のUIから処理まで自ら実装する必要があるため、「FirebaseUI Auth」に比べて実装工数が高くなります。
これはどういうことなんやろか...onigiri.w2.icon
ていうかFirebaseUIが提供してくれるUIのレベルがわからんから、何とも言えないな