LoginSignup
4
4

More than 5 years have passed since last update.

Cognito UserPoolsでのメール・SMS認証をスキップする

Posted at

前提とやること

前提は、UserPools・登録ページを作成済みであること。

UserPoolsを使ったユーザ認証では、メールorSMS認証がデフォルトでは必須です。また、2017/01/06現在、コンソール上から認証を解除する方法は見当たりません。そこで今回は、メール・SMS認証無しでユーザ登録が完了し、ログインできる状態にしたいと思います。

概要

  1. Sign UpのタイミングでLambdaを起動
  2. autoConfirmを有効にする

やりかた

Lambdaの作成

UserPoolsと同じリージョンに下記処理が書かれたLambdaを作成します。Roleは特に何も必要ありません。

exports.handler = function(event, context, callback) {
    if (event.triggerSource == 'PreSignUp_SignUp') {
        event.response.autoConfirmUser = true;
    }
    callback(null, event);
}

UserPoolsの設定

該当のUserPoolsのTriggersを開きます。Pre sign-upのLambda Functionを上で作成したLambdaにします。これを設定することによって、登録ページで、登録ボタンが押された際に、このLambdaFunctionが呼ばれ、autoConfirmUserが有効に上書きされます。これをすると、ユーザに面倒な認証をして貰う必要がなくなります。

eventの中身はこんな感じです。この辺に応じて、メール・SMS認証をスキップするかどうかを判断してもいいかもしれません。

{
    "version": "1",
    "region": "us-east-1",
    "userPoolId": "us-east-1_xxxxxxxxxx",
    "userName": "xxxxxxxxxxx",
    "callerContext": {
        "awsSdkVersion": "aws-sdk-js-2.4.12",
        "clientId": "xxxxxxxxxxxxxxxxxxx"
    },
    "triggerSource": "PreSignUp_SignUp",
    "request": {
        "userAttributes": {
            "email": "your mail address"
        },
        "validationData": null
    },
    "response": {
        "autoConfirmUser": false,
        "autoVerifyEmail": false,
        "autoVerifyPhone": false
    }
}

注意点としては、登録時に認証コードが書かれたメールが送られていましたが、それは送られなくなります。よって、ユーザに登録されたことを通知したければ、別途LambdaFunctionにSES等を使ってメールを送る処理を書いていく必要があります。

おわり。

4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4