IDaaS がこれからは必須!認証・認可は Azure Active Directory B2C (AADB2C) がおすすめ

IDaaS がこれからは必須!認証・認可は Azure Active Directory B2C (AADB2C) がおすすめ

はじめに

これからの時代のアプリケーション開発に必須である一方、意外と知られていない機能。それが IDaaS (Identity as a Service) です。
fwywd(フュード) でもバックエンドとして利用している Microsoft Azure に用意されている認証・認可機能などを兼ね備えた IDaaS である Azure Acitve Directory B2C (AADB2C) がめちゃくちゃ良いのです。
今回は絶対知っておいて損のない IDaaS に関して、4つのメリットを紹介します。

IDaaS

IDaaS とは?

まず IDaaS とはその名の通り、ユーザー情報を管理するとこに特化したサービスです。AADB2C 以外では Auth0 が有名です。通常は自前のサーバー内でユーザー情報の管理からログイン時の情報の照合などを行うことが一般的でしたが、この機能だけを分離して、サービスとして提供しているのです。
IDaaS

Azure が提供する IDaaS

基本的には、Azure Active Directory (Azure AD) が Microsoft Azure が提供する IDaaS です。消費者 (consumer) 向けに特化した機能が付け加えられた Azure の IDaaS が Azure Active Directory B2C (Azure ADB2C or AADB2C) というわけです。これからユーザーのログインなどの認証・認可機能を実装したいという方にはぴったりです。
AADB2C では、Azure API Management と組み合わせることで、認証済み(+許可対象)のユーザーのみ情報にアクセスできるような認可機能も非常に手軽に実装できます。実装するというよりも、Azure API Management の画面上に利用する AADB2C の ID を設定するだけですので、時間にして 30 秒ほどで完了できてしまうのです。
これからのクラウドの時代は、サーバーを借りてその中でアプリケーションを構築するのでは環境をフル活用できていません。IDaaSPaaS など各機能に特化したサービスを必要に応じて組み合わせることで、コストを削減しながらスケール拡大にも対応できるような構成を作っていくのです。

認証機能って簡単じゃね?

それでは、IDaaS を導入するメリットを見ていきましょう。Python での Django や Ruby での Ruby on Rails などの Web アプリケーションフレームワークを利用して、これまで Web アプリケーションを開発して来られた方も多いと思います。その方々にとっては、認証機能って Web アプリケーションフレームワークの中に入っているので、別で実装する必要なくない? という感じだと思います。かつての私もそう考えていました。

IDaaS を導入する4つのメリット

メリット1:UI の実装が不要

この理由だけでも IDaaS を絶対に導入した方が良いと思います。通常 Web アプリケーションを実装していくときには、ログインやログアウトの画面が必要となります。当たり前のことですし、情報としてはそれなりに揃っているのですが、この認証周りの実装は地味に面倒なのです。
AADB2CAuth0 では、この認証画面の実装が一切不要です。ログインや新規登録ボタンを押した際に AADB2C の指定されたリンクに遷移させるだけです。ログイン後に、認証情報を持ってリダイレクトしてきてくれます。この辺りは本記事で実際に紹介しますね。最近では実装が当たり前になっている Google や Facebook アカウントでのログインも実装は意外と面倒なのですが、AADB2C では GUI だけで超簡単に設定できます。

メリット2:セキュリティ対策になる

アプリケーションで攻撃が多いのがログイン画面なのです。もちろん、この攻撃に耐えられるように Web アプリケーションフレームワーク側でセキュリティ対策が施されているため、知識がなくてもある程度攻撃から守ることができています。しかし、そのような一番攻撃が多い箇所を無知なまま進めていくと、いつか痛い目を見るかも知れません。
それに対して、AADB2C などの IDaaS では、ログイン画面などは全て IDaaS 側で管理されているため、強固な最新のセキュリティ対策が施され続けます。Web アプリケーションフレームワークで守るというよりも、サービスとして守られるため、多くの開発者にとっては絶対に取った方が良い選択です。
私自身も、元々はソフトウェアテストの会社で働いていた経験があり、ある程度は攻撃のパターンに関する知識があります。それでも、最新の情報を追い続けることは困難ですし、同じ力を使うのであれば、UI/UX がさらに改善される方法論の調査に充てます。多くの開発者にとって、IDaaS を利用して認証・認可の内製化を手放すことは本質的な開発に充てられる時間を長くするものです。

メリット3:スケールに強くなる

ユーザー数の多いサービスの場合、ログイン後の認証や認可を行う処理は極めて処理量が多くなります。したがって、最初は動いていて良かったものが、いつしかどんどん遅くなっていくのです。
この対策として、Reddis などを利用して、ユーザーログイン後のセッション情報をキャッシュするなどで改善している例が多いはずです。ここまで実装できれば、もちろん良いのですが、新規事業など機能追加に追われるチームにとっては、このスケールに向けたパフォーマンス改善に充てられる人材リソースは少ないはずです。
それに対して、AADB2C などの IDaaS では、この点もほとんど気にする必要がありません。スケールはパブリッククラウドが得意な領域であるため、ユーザーが拡大しても、これまでと同じようなパフォーマンスを得られ続けます。
しかも、AADB2C は月間アクティブユーザーが 50,000 人までは無料で使えて太っ腹です。初期のコストを気にするベンチャー企業や個人開発にとっても良い選択と言えます。

メリット4:複数アプリでも管理が楽

企業では、1つのアプリケーションだけでなく、複数アプリケーションを保有していることが多く、これらのアプリケーション間でユーザー情報を適切に管理できているかも重要です。運営している会社が同じにもかかわらず、各アプリケーションごとに新規登録が必要になったりといった不便な体験はないでしょうか。小規模な開発のみに関わっていると視野に入れていないことが多いのですが、大事な観点です。
情報を一元管理できていないとセキュリティのリスクが高まりますし、効率の良いマーケティング施策が打てないといったことも考えられます。これから大きくなっていくことを見据える会社ほど、複数アプリケーションの情報を一元管理できる IDaaS が求められているはずです。

IDaaS が気になった方が次に読んでほしい記事

AADB2C の導入

AADB2C の導入はすでに以下の記事で紹介していますので、興味を持っていただけた方はぜひこちらからご覧ください。どのくらい手軽かがすぐに分かっていただけるはずです!

React & Next.js と AADB2C の連携

fwywd でも利用している React & Next.js の認証機能として AADB2C を利用する具体的な流れを紹介していますので、ぜひご覧ください。

Microsoft Azure を選択する理由

また、Microsot Azure をパブリッククラウドとして採用していますが、その理由も以前紹介していますので、気になった方はぜひこちらもご覧ください。

おわりに

IDaaS も含め、これからは複数サービスの組み合わせられる力が重要になります。
その一方で、この議論をするときに話題に挙がるのが、サービスの差別化を図るための内製化も当然重要となります。
どのような機能は内製化すべきでないか?
その答えは、多くのサービスで共通する処理は内製化する必要がないと答えています。つまり、コモディティ化した機能です。認証や認可はその代表格と言えるのではないでしょうか。このようなコモディティ化した機能の開発に注力したところで、サービスの差別化には繋がりません
このコモディティ化しているか否かを基準に、XXaaSAPI といった外部サービスの利用か、内製化を判断していくと良いでしょう。

著者

株式会社キカガク 代表取締役会長
吉崎 亮介
twitter: @yoshizaki_91