Posted at

Cognito User Poolsでのユーザの認証方法について

More than 3 years have passed since last update.

Cognito User Poolsではサインアップ、EmailやSMSでの認証、ログインという手順を踏みますが、今回はEmailやSMSでの認証の方法について書きたいと思います。


EmailやSMSでの認証 その1

最初の方法としては、Management Console上から設定する方法です。

ユーザによってメッセージを変える必要がない場合はこちらの方法が良いかと思います。

Attributesでemailかphone numberを追加します。

User_Pools_-_Amazon_Cognito.png

Verificationsで認証の送信先と、タイトル、メッセージを設定します。

※ 2016/8/20現在では、Management Console上でメッセージに日本語を含めることはできません。

User_Pools_-_Amazon_Cognito.png

送られてくるメッセージはこんな感じです。

IMG_1475.PNG


EmailやSMSでの認証 その2

2番目の方法としては、TriggersでLambda関数を設定し、Lambda関数でメッセージの作成をする方法です。

ユーザによってメッセージを変える必要がある場合や日本語でのメッセージを送りたい場合はこちらの方法が良いかと思います。

その1と同様にAttributesの設定をしますが、Verificationsの設定をする必要はありません。

また、追加でTriggersのCustom Messageを設定します。

User_Pools_-_Amazon_Cognito.png

ここで設定したLambda関数は下記のようになっています。

exports.handler = function(event, context) {

if (event.triggerSource == 'CustomMessage_SignUp') {
// SMSの場合
event.response.smsMessage = '認証コードを送付します。あなたの認証コードは ' + event.request.codeParameter + 'です。';
// Emailの場合
event.response.emailSubject = '認証コードを送付します';
event.response.emailMessage = 'あなたの認証コードは ' + event.request.codeParameter + 'です。';
}
context.done(null, event);
}

上の例を見て頂ければ分かるように、この方法ではメッセージを日本語で送信することができます。

送られてくるメッセージはこんな感じです。

verification_image.jpeg


EmailやSMSでの認証をスキップしたい場合

そもそも、EmailやSMSで認証コードを送りたくない場合は、TriggersのPre Sign-upでLambda関数を設定します。

Lambda関数はこんな感じです。

exports.handler = function(event, context) {

if (event.triggerSource == 'PreSignUp_SignUp') {
event.response.autoConfirmUser = true;
}
context.done(null, event);
}

この機能を使えば、特定のユーザに対してのみ認証を求めることも可能になります。


最後に

Cognito User Poolsの認証方法についてまとめてみました。

ここに記載されている以外の方法がもしあったら、共有して頂けると嬉しいです!