Upgrade to Pro — share decks privately, control downloads, hide ads and more …

マネージドサービスで作る認証機能

 マネージドサービスで作る認証機能

AWSのCognitoを使うことで、安全なWebアプリの認証機能を作ってみようという発表です。

Takahiro Tanaka

May 03, 2023
Tweet

More Decks by Takahiro Tanaka

Other Decks in Technology

Transcript

  1. ログイン、ユーザ管理って面倒  OWASP Top10の中にも「A07 識別と認証の失敗」として、ユーザ認証に関する脆弱性がランクインして います。認証機能として、対応する必要がある課題として、以下のようなものが列挙されいます。  パスワードリスト攻撃、ブルートフォース攻撃などの自動化された攻撃への対応  弱いパスワード、良く使われるパスワードが使われないようにする

     パスワードを亡失した場合のリセットプロセスの安全な実装  パスワード保存を適切なハッシュ化をして保存する。  多要素認証への対応 直接的なビジネスロジックではないので、注力して書きたい機能ではないが、 中途半端な実装をしてセキュリティ的な穴を作ると、後でひどい目を見る機能
  2. Amplifyでログイン画面を実装する  以下のAmplify SNS Workshopの導入部分「MVPを作ろう!」までを 実施すると、ログイン機能+DynamoDBに対しての書き込み機能 までが作れます。  https://amplify-sns.workshop.aws/ja/ 

    作られるログイン画面は右のような画面になります。  この機能はAmplifyのAuthモジュールを利用して実装されています。 次ページ以降でAuthモジュールについて見てみましょう。
  3. Cognitoでのサインアップのフロー  Cognitoを使ってサインアップ機能を実装する場合、以下のようなユーザ確認フローになります。 登録済 (未確認) 確認済 パスワード リセット が必要 強制

    パスワード リセット 無効化 管理者による確認 Eメールor SMS による確認 サインアップ 無効化 有効化 パスワードの リセット ユーザをインポート 管理者がユーザを作成 Lambdaをトリガー (確認部分をカスタマイズできる)