この記事は Goodpatch Advent Calendar 2022 の10日目です。
こんにちは、Goodpatchの ReDesignerサービスでバックエンドを担当している荒木です。
はじめに
多要素認証を導入するため検討してみました。
(時間がないので作り込みではなくサービス利用を選択)
どんなサービスがある?
Webサービスやアプリ、社内システム向けなど様々なサービスがありますが、今回はWebサービス利用ということでシングルサイオン対応しているサービスをいくつかピックアップして検討します。
-
Uni-ID MFA
特徴- WebAPI提供による多要素認証の導入が可能
- OATH TOTP に準拠した認証機能
- 料金は問い合わせ、利用ユーザー数に影響されそう
-
Twilio Verify
特徴- 10行足らずのコードでウェブやモバイルのアプリに二要素認証の機能を追加可能(サイト曰く)
- 音声通話もサポート
- 認証1件あたり$0.05。ボリュームディスカウントは要相談
-
Auth0
特徴- 料金が他より明確に公開されてて、シンプルな利用ならお安め
- SPAとWebAPIという構築なら綺麗に分離できそう
- ユーザー情報をAuth0側に持つことになるのでその分の作り込みや移行が必要になる。
-
Amazon Cognito
特徴- AWSな料金(50,000 アクティブユーザー/月が無料)
- 実装情報が多い
- ユーザー情報をCognitoからのユーザー取得はリクエスト制限有り
調べてみても実装の具体例は少なめでしたがAuth0とCognitoは比較的多かったです。
利用料金や既存サービス環境がAWS、既存システムへの導入と考えると今回はCognitoが無難だと考えました。
※ 読み方はCognito(コグニート)
コンソール上での動作確認
2.アプリクライアントを対象アプリ毎に作成します.
コンソール上でUIを起動する場合は古いコンソールで作業した方が解りやすいかも
3.コンソール上でUI起動すると設定に合わせて下記(未カスタマイズ)のログイン画面が表示されて実際にアカウント発行やログインが行えました。
4.そのままMFA認証もできて、実際にGoogle認証システムなどに登録してコード発行できます。
5.発行したアカウントは下記のようにプールされたことを確認できました。
実際に運用を想定した際に検討すること
-
アカウント管理画面はAWSコンソールだと使いにくいので結局連携して実装も視野に入れる。
-
アドレス認証のメールはCongnitoから送信されるのでカスタマイズ可能な範囲が限られる。
まとめ
簡単な検証でしたが、Webサービスへの導入要件は十分満たしている印象でした。これから実際にアプリへの組み込みも検証していこうと思います。
(フロントサイドへの組み込みはAuth0の方が楽そうです。)