【5分でわかる】GTM(Googleタグマネージャー)の設定方法
インターネット広告
2024.11.28
更新日:2022.12.23
公開日:2020.11.13
ユーザーがログインして使うサービスにおいて認証・認可の仕組みを実装する際、セキュリティの観点を考慮して設計をする必要があります。設計に時間が掛かり、サービスの本質部分を開発する時間が十分に取れないこともあります。 自社開発プロダクト「SEARCH WRITE」でもログイン機能や管理機能を実装していますが、一から作る代わりに Auth0というIDaaSを導入し、セキュアな認証・認可の仕組みを比較的簡単に組み込むことで、サービス本来の価値づくりに集中できました。本番環境で1年以上運用してみた経験に基づき、Auth0のメリット・デメリット、そして導入する際の失敗談を紹介します。
Webアプリやモバイルアプリ、WebAPIなどに対して認証・認可の機能を提供するIDaaS(Identity as a Service)です。
クラウド経由でログイン情報管理・シングルサインオン(SSO)・アクセス制御などの仕組みを提供するサービスです。
大きく分けて2つあります。
Webやモバイルでユーザー認証・認可の機能を組み込む際、ログイン機能やAPI間の認可の仕組みなど、セキュリティの観点から様々なことを考慮して開発しないといけないため、時間がかかります。
しかしAuth0を導入することによって、セキュアな認証・認可の仕組みを比較的簡単に組み込むことができるようになり、サービス本来の価値を作り出すことに集中して使えるようになります。
Auth0を導入することで、ユーザー管理用のダッシュボードをWebから簡単に確認でき、さらなる工数削減に繋がります。また、API経由でユーザーのログイン履歴を取得することも可能です。 ログイン状況をダッシュボードで把握できるため、利用状況の可視化機能を新規で作る必要もありません。
SEARCH WRITEはフロントエンドとバックエンドを完全に分離したSPA + WebAPIで動いています。認証(あなたは誰ですか)に関わるログイン機能はフロントエンドとAuth0の連携のみで実現しており、バックエンドは認証部分に関わっていません。ユーザー管理と認証部分をAuth0に任せられるため、バックエンドでの自前実装によるリスクを避けることができます。
一方でフロントエンドからの認証・認可では、Auth0の仕組みを理解した上で実装する必要があります。SEARCH WRITEはBtoBのSaaSであり、ログインユーザーのみがWebAPIを使えます。リクエストをしてきた人が登録されたユーザーなのか(認証)、対象のWebAPIを使っていいのか(認可)をAuth0を使ってチェックします。
フロントエンドからIDとパスワードをAuth0に送るとTokenが発行されます。このTokenをサービスのWebAPIをコールする際に付与します。WebAPIでは認証は行わない代わりに、このTokenの検証を行います。Tokenは公開暗号方式で作成されており、復号できるか(=改ざんされていないか)・有効期限内か・権限などのサービス利用に必要なユーザー情報を持っているかなどを検証することで、不正なリクエストを防ぐことができます。
認証・認可はプロダクトの競争力に直接関わる部分ではないため、Auth0のようなIDaaSに任せることで、自前実装によるリスクや工数を減らせました。私自身、初めてこのような仕組みを取り入れましたが、今まで全部自前実装していたのに比べて、開発の進め方がここまで変わるのかと、良い意味で驚きがありました。
しかし、実は開発途中でやらかしていたことがあります。
ユーザーがログインした時にAuth0が発行するTokenにはToken発行日の情報が含まれています。サービスのWebAPIはTokenの発行日時も含め検証し、WebAPIをコールして良いユーザーなのかを確認しています。
Auth0導入初期、WebAPI側の認可処理を担当していました。実装が完了し、フロントエンド とWebAPIの導通チェックをしていると、なぜか18秒必ず待ってからWebAPIをコールしないと認可が通らない問題が発生しました。
その原因を調べるために問い合わせや調査をしてみましたが、全く見当がつきません。ある日先輩のPCで試してみると、なんと18秒待たなくても認可が通るのです。判明してみれば単純な原因で、私のPCの時刻が日本標準時から18秒遅れており、認可処理でTokenの発行日時を検証したときにAPIコールされたPCの日時がまだTokenの発行日時ではないため、受け取ったTokenは不正扱いとなっていたのでした。
自分のPCの時刻がずれているだけで通らなかったという事実がとてもショックで、今では毎日時間がずれていないかのチェックを行うことをしています。Auth0に関わらず、日時に関わる処理などを行う際はPCの時刻にずれがないかの確認をおすすめします。
最後に改めて、1年以上Auth0を本番環境で開発・運用してわかったメリットとデメリットをまとめます。
メリット
デメリット