- 開発技術
Amazon Cognitoを使った多要素認証の導入
- #AWS
多要素認証とは
【エンジニア募集中】フルリモート可◎、売上/従業員数9年連続UP、平均残業8時間、有給取得率90%、年休124日以上 etc. 詳細はこちらから>
認証にはIDやパスワードなどの「知識情報」、携帯電話やICカードなどの「所持情報」、利用者の指紋や声紋などの「生体情報」の3要素があります。
この要素のうち、2つ以上を組み合わせて認証する方法の事を「多要素認証」(Multi-Factor Authentication:MFA)と呼んでいます。
Amazon Cognitoについて
Amazonから提供されているサービスで、Webやモバイルアプリに対して簡単に認証、承認、ユーザー管理の機能を追加することができます。
「Cognito」の読み方は”コグニート”だそうです。
Amazon Cognitoの設定
AWSマネージメントコンソールの[サービス]から[セキュリティ、ID、およびコンプライアンス]→[☆Cognito]から設定ができます。
Cognitoの設定手順としては、大きく「ユーザープールの作成」と「IDプールの作成」を行う必要があります。
ユーザープールとは、Amazon Cognitoのユーザーディレクトリの事を指します。
ユーザープールにサインアップする事でCognitoにユーザー登録がされ、サインインが可能となります。
ユーザープール作成時の設定では、エンドユーザーのサインインの方法(ユーザー名、メールアドレスや電話番号、その他のカスタム属性など)、要求パスワードの強度、自己サインアップの許可(ユーザー自身がユーザー登録を可能にするか、もしくは管理者のみがユーザー登録を可能にするか)など、様々な設定が可能です。
これらは作成後の運用状況によって、変更などが柔軟に可能となっています。(ただし、一部の設定は作成後の変更ができないため、注意が必要です。)
IDプール(フェデレーティッドID)とは、未認証のゲストユーザー、および認証後にトークンを受け取ったユーザーに対して一時的なAWS認証情報を提供するものを指します。
クライアント側プログラムの作成
クライアントプログラムからCognitoを利用する際には、最低限、以下のパッケージが必要になります。
・aws-sdk
・amazon-cognito-identity-js
npmなどでのインストールも可能なので、あらかじめインストールしておきます。
クライアントプログラムでは、主に以下の処理を実装する必要があります。
・Cognitoへのサインアップ処理
・サインアップしたアカウントのアクティベーション処理
・Cognitoへのサインイン処理
※詳細なソースコードについては、次回機会がございましたら掲載させていただきます。
動作検証
弊社が某クライアント様向けに実装したCognitoを利用して多要素認証を組み込んだWeb画面を紹介させていただきます。
【エンジニア募集中】フルリモートも◎(リモート率85.7%)、平均残業8時間、年休124日以上、有給取得率90% etc. 詳細はこちらから>