Amazon Cognitoを使った多要素認証の導入

AWS cognito

多要素認証とは

【エンジニア募集中】フルリモート可◎、売上/従業員数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. 詳細はこちらから>

Smallitのサービス