Firebase Authenticationってどんなもの?利用するメリット、実装方法を解説|東京のWEB制作会社・ホームページ制作会社|株式会社GIG

Firebase Authenticationってどんなもの?利用するメリット、実装方法を解説

2021-05-11制作・開発

こんにちは! GIGエンジニアのいっしー(@issy_s16)です!

普段は、デジタル系フリーランスと企業をつなげるお仕事マッチングサービス『Workship』のバックエンド開発を担当しております。

昨今はセキュリティリスク回避のため、ユーザー認証機能を提供するサービス(IDaaSと呼ばれる)が急速に普及してきています。今回は弊社のプロジェクトで利用している「Firebase Authentication」について、利用するメリットや実装方法についてお話をさせていただきます。


この記事を読むとわかること

  1. Firebase Authenticationとは
  2. Firebase Authenticationを利用するメリット
  3. Firebase Authenticationの基本的な実装方法



1.Firebase Authenticationとは

概要

「Firebase Authentication」はユーザー認証機能を提供し、ユーザ情報をクラウドで保存してくれる、Google運営のサービスです。


できること

Firebase Authenticationを利用することで、アプリケーションにユーザー認証機能を独自で実装することなく、ユーザー認証機能を提供できるようになります。

認証方法には、主に以下が用意されています。

  • メールアドレスとパスワードによる認証
  • 主要なプロバイダーアカウントによる認証
    (Google / Twitter / Facebook / Github / Apple / Yahoo! / Microsoft 等)
  • 匿名認証
  • カスタム認証
  • 電話番号認証


料金体系

ほとんど全ての機能が無料で使えます。
FirebaseをBlazeプランにすることで使える「電話番号認証」機能のみ、従量課金となります。
他社のID認証サービスと比べてコストを抑えられるのは大きなメリットですね。



2.Firebase Authentication等のIDaaSを利用するメリット

ここからは「Firebase Authentication等のIDaaSを利用する、代表的なメリットを解説します。


メリット1.  

ユーザー認証システムを独自で実装しないことによるセキュリティリスクの回避

ユーザー認証システムを独自で実装する場合、気をつけなければならないセキュリティリスクはいくつもあります。

  • パスワードは正しくハッシュ化して扱っているか
  • ハッシュ化に利用している関数は脆弱性のないものになっているか
  • フォームは改竄されない仕様になっているか … 等

さらにはこういったリスクを網羅していたとしても、実装をする際に思わぬバグを埋め込んでしまうリスクもあります。

そのようなリスクを回避しセキュリティを向上させるために、IDaaSにユーザ認証システムを預けるのが良いとされます。


メリット2.  

今後増え続けるログイン方法やデバイスに対応するための工数削減

ユーザー認証システムを独自で実装する場合、今後新しいサービスやデバイスが生まれてきた時に、都度工数をかけてシステム対応を行う必要があります。

IDaaSを利用することで、そういった面倒な処理を肩代わりしてくれるため、工数の削減にも繋がります。


メリット3. 

重要情報をクラウドに預けることによる安全性の向上

ユーザー認証システムを独自で実装する場合、メールアドレスやパスワードなどの個人情報を保管する必要があり、漏洩させないための対策など大きな責任を負う必要があります。

Googleなど信頼のおける事業者に管理を委ねることで、独自で管理するよりもセキュアな環境を構築することができます。

上記のようなメリットがあるため、今後サービスにおけるユーザー認証システムは「積極的にIDaaSを利用することが良い選択である」と筆者は考えています。



3.Firebase Authenticationの基本的な実装方法

Firebase Authenticationをアプリケーションに導入する方法は、ユースケースによって大きく3つの実装方法に分類されます。以下で簡単にご紹介いたします。


実装方法1. 

FirebaseUI Authを利用する

最も簡単にFirebase Authenticationをアプリに導入する方法です。

「FirebaseUI Auth」とは、後述するFirebase Authentication SDKを基に作成されたライブラリで、利用者側はSDKを自ら呼び出す必要がなくなるという非常に便利なライブラリです。

公式では「ドロップイン認証ソリューション(※)」と呼ばれています。
※必要な設定項目を記述するだけで「UIから認証処理まで全て埋め込んでくれる」といった簡単に実装できることを指します

  • メリット
    • 必要な設定項目だけを記載することで、UIから認証処理まで一貫して提供してくれる。
    • 提供されるUIには、モバイルアプリやウェブサイトでコンバージョンを高めるためのベストプラティクスが導入されており、基本的にはそのまま使うことができる。
    • オープンソースであるため今後の改善も期待できる。

  • デメリット
    • 現時点ではまだUIのカスタマイズが難しい。


実装方法2. 

Firebase SDK Authenticationを利用する

FirebaseUI Authでは対応できないようなアプリ独自の処理を追加したい場合には、「Firebase SDK Authentication」の利用をおすすめします。

  • メリット
    • SDKを自ら呼び出すように実装するため、細かな処理まで利用者側がコントロールできるようになります。

  • デメリット
    • ログインボタン等のUIから処理まで自ら実装する必要があるため、「FirebaseUI Auth」に比べて実装工数が高くなります。


実装方法3. 

Admin Auth APIを利用する

既存のユーザー データベースが存在する場合や、ネイティブのFirebase Authenticationでは対応していないプロバイダーでもユーザー認証を行いたい場合には、「Admin Auth API」のカスタム認証の出番となります。

「FirebaseUI Auth」「Firebase SDK Authentication」で認証したあとに生成されるログイン情報(JWT)をサーバー側で認証することも可能です。

  • メリット
    • ネイティブでサポートしていないプロバイダーなどをカスタム認証でFirebase Authenticationに繋ぎこむことができる

  • デメリット
    • Admin Auth API単体ではカスタム認証しか行えないため、メールアドレスやプロバイダーによるログインには「FirebaseUI Auth」「Firebase SDK Authentication」が必要となってくる。



まとめ

今回はFirebase Authenticationを利用するメリットや、基本的な実装方法についてお話いたしました。
サービスの中でも特にユーザ認証に関する部分は、セキュリティに気をつけて開発を行っていきましょう!

長々と読んでいただきありがとうございました!

石倉 彰悟(いっしー)

Workship開発チーム・カスタマーサポートチームのマネージャー。 ソーシャルゲーム開発を行うSAPでカスタマーサポートとして従事した後にエンジニアに転身し、大規模決済システムやEC系Webサービス等の構築を経験。2018年にGIGにジョイン。