目次
Webアプリのユーザーの認証機能実装はなぜ大変なのか
Webアプリにはその用途からユーザー認証機能がついていることが多いと言えます。
そのため、Webアプリの作成には認証機能の実装が必要なのですが、これを実現するためにはハード的、セキュリティ的に難しいポイントがあります。
ここでは認証機能実装が大変な理由を説明します。
認証サーバーを用意しなければならない
まず1つ目にあげられるのが、認証用のサーバーを用意しないといけないということです。
ユーザーのログイン情報を参照し、不正なアクセスではないか判定をするためのサーバーを、webアプリを展開するサーバーとは別に用意する必要があります。認証サーバーを作るだけでもかなり工数はかかりますし、設計、実装までする時間もかかります。
ユーザー情報を安全に保たなければならない
2つ目にあげられる理由は、ユーザー情報を安全に保つ必要があるということです。
ユーザーのログイン情報、ログイン後に参照できる情報は、当然第三者に渡ってはいけない情報となります。そのため、それらユーザー情報が簡単に搾取されないようにセキュリティ対策を万全にする必要があります。
セキュリティ対策と一口に言っても、適切に実装を行うためには知識がそれなりに必要になります。
Webアプリの認証機能作成におすすめなFirebaseのサービスとは
前述のように、webアプリの認証機能を実現するためには難しい点がいくつかありますが、それらを解決するソリューションがFirebase Authenticationとなります。Firebaseは、いわゆるBaaS(Backend as a Service)です。
前述の通り、認証機能の開発はコストが大きく、認証方法の実装を増やせばそれだけ追加でコストが嵩みます。そのため、それら認証機能実装のためのSDKがあるFirebaseを使うことで、認証機能の実装コストを下げることができます。
Firebaseのサービスで使用できる認証方法5つ
ここからはFirebaseのサービスで使用できる認証方法について解説していきます。今回は、電話番号による認証を始めとした5項目をピックアップしていきます。
使用できる認証方法1:電話番号による認証
1つ目の認証方法は、電話番号による認証です。
Firebase Authentication宛に電話番号を送り、SMSで認証用のコードが送られ、そのコードをユーザーが再度入力することで認証を行います。 Googleなどで使われる認証の仕組みになります。
使用できる認証方法2:匿名による認証
2つ目の認証方法は、匿名認証です。
匿名のユーザーをシステムに作成し、そのユーザーでシステムにログインを行います。一旦ログインができれば、後から認証情報を紐づけることで、データを引き継いで匿名のユーザーから一般のアカウントに移行することができます。
使用できる認証方法3:パスワードとメールアドレスを使った認証
3つ目に紹介するのは、パスワードとメールアドレスを使った認証方法です。
こちらはGmailなどで使われているかなり一般的な認証なので、使ったことがある方もいるでしょう。webページの入力フォームからサーバーに情報が送られ、認証処理が行われる仕組みとなります。
万が一パスワードを忘れた場合などの対処も、実装が必要です。
使用できる認証方法4:カスタム認証システムとの統合による認証
4つ目に紹介するのは、カスタム認証システムとの統合による認証です。
これはシステム管理者が独自に認証システムを構築している場合に利用される方法で、独自認証システムが発行する認証コードを使って認証処理を行います。
使用できる認証方法5:フェデレーションIDプロバイダとの統合による認証
最後に紹介するのは、Firebase Authenticationで定められている特定の認証プロバイダを使って認証する方法です。
いくつか認証プロバイダがありますが、例えばGoogleなどのフェデレーションIDプロバイダにユーザーがログインを行います。認証トークンはIDプロバイダから発行され(この例ではGoogle)、その情報を使ってシステム認証を行います。
ユーザー認証機能をFirebaseサービスで作成するメリット5つ
ここからは、ユーザー認証機能をFirebase Authenticationで作成するメリットについて説明していきます。
Firebase Authenticationはとても便利なサービスなので、ここでしっかり全体像を把握しておきましょう。毎回Authenticationがついているのは、Firebaseはアプリケーション群であるので、Authenticationをつけないとどのアプリを言及しているかわからないためとなります。
Firebaseサービスのメリット1:認証方法ごとの新アカウント作成を防止できる
まず1つ目のメリットとしてあげられるのが、認証方法ごとの新アカウント作成を防止できることがあげられます。
自前で認証システムを実装する場合、認証ごとに新アカウントを作成されないように実装する必要がありますが、firebaseではその機能が既に用意されています。
Firebaseサービスのメリット2:少ないコードで導入できる
2つ目のメリットとしてあげられるのが、少ないコードで導入できるということです。
認証のバックエンド処理はFirebaseが作業を請け負ってくれるので、エンジニアはシステム開発に集中することができます。
また、Firebaseには無料プランもあり、上記の特徴から動作を試したい時に料金を抑えて気軽に試すことができます。
Firebaseサービスのメリット3:認証方法に対応したメソッドがある
Firebase Authenticationを利用するメリットの3つ目として、認証方法に対応したメソッドがすでに存在しているということがあげられます。
ユーザーはそのメソッドを必要に応じて組み合わせるだけで、希望の認証方法を実装することができます。開発工数の削減に直結するため、これも重要な点となります。
Firebaseサービスのメリット4:認証されたアカウントを管理できる
Firebaseには、コンソール画面からユーザーアカウントを管理することができます。
アカウントの作成・パスワードの再発行・アカウントの停止/削除などの基本的な動作を、GUIで操作することができます。
CLIでももちろん操作可能ですが、GUIで行うことができるというのは、学習コストを一気に下げてくれるので初めての方でも取り組みやすいでしょう。
Firebaseサービスのメリット5:認証方法の制限ができる
前述のFirebaseのコンソール画面から、ログイン方法(認証方法)の制限を簡単に切り替えることができます。
Firebaseを使わない場合にはログイン方法を切り替える時に、ソースコードから変更する必要があり、手軽にはなかなか行えません。簡単にGUI操作で切り替えられるのは、非常に便利であると言えます。
認証の仕組みについて
ここからは、認証の仕組みについて説明していきます。前述で認証方法を5つ紹介しておりますが、それらに共通する基本的な流れを説明します。
認証のステップは3つに大きく分けることができます。「認証情報をユーザー(もしくはプロバイダ)から獲得」、「認証情報をFirebase Authenticationが処理」、「認証結果をユーザに返す」となります。
Firebase Authenticationの実装方法
Firebase Authenticationの実装方法について説明していきます。ここではプロジェクトの作成と設定の方法を説明しますが、ユーザー作成の方法については割愛します。
Firebase Authenticationにユーザー登録する際にも、認証方法を意識してみると良いでしょう。
プロジェクトの作成方法
Firebase Authenticationでは、公開されているシステムと連携する認証方式をプロジェクトという単位で管理しております。GUIで簡単に作成が可能になります。
ログインすると「プロジェクトを追加」というボタンがありますので、そちらを押します。プロジェクトの名前、Goolgeアナリティクスとの連携を行うかを選択します。
プロジェクトの設定方法
プロジェクトを作成した後は、アプリケーションにプロジェクトを連携させます。ios、android、Webアプリのうち、現在連携させるアプリケーションを選択して、連携のための諸情報を入力します。
webアプリを作って試したい方は、vue.js(もしくはreact.js)などを使って実装すると簡単でしょう。nuxt.jsなどのフレームワークを使って開発することをお勧めします。
連携はFirebase Authenticationのサイトの導入手順に沿って行えば簡単に行うことができるので、スムーズに処理をするためにも事前に連携させるアプリの情報を確認しておきましょう。
Firebaseのサービスで認証機能を作成しよう
Firebaseのサービスを用いて認証機能を実装する手順についてまとめました。認証機能を一から実装するのは非常に工数がかかり、さらにセキュリティレベルの担保なども難しいと言えます。そのため、オールインワンで対応が可能なFirebase Authenticationを使いましょう。
firebase関連のスキルは転職でも有利なので、転職希望の方はご自分で勉強することをお勧めします。
インフラエンジニア専門の転職サイト「FEnetインフラ」
FEnetインフラはサービス開始から10年以上『エンジニアの生涯価値の向上』をミッションに掲げ、多くのエンジニアの就業を支援してきました。
転職をお考えの方は気軽にご登録・ご相談ください。