以下のページに試してみたい文言が・・・

ユーザーは、アプリのセキュリティ要件に適した期間、MFA なしでログインすることを選択できます。

 

ってことでやってみました。

 

cognitoユーザープール「サインインエクスペリエンス」

「デバイス追跡」から以下のように設定。

ユーザーデバイスを記憶 「常に記憶する」

MFAを抑制するために記憶されているデバイスを信頼する「はい」
 

 

※ 最初javascriptコマンドプロンプトから実行してみましたが、コマンドプロンプトから実行するとなぜか、

  毎回違うデバイスと判断されて、MFAスキップができなかった。

 

通常にログインするように、実装します。

そうすると、ユーザー画面に以下のようにデバイス追跡ログが表示されます。

 

MFA認証をスキップできるようになりました。

次に”ユーザーは、アプリのセキュリティ要件に適した期間”の部分

 

MFA認証を再度戻すには、ForgetDeviceを呼び出して、一度信頼されたデバイスから削除する必要があります。

ので、getDeviceで取得される「DeviceCreateDate」が最後にMFA認証した日時に該当します。

※ソースコード汚いですが・・・・。

javascriptです。

            cognitoUser.getDevice({

                onSuccess: function (result) {

                    var jsonString = JSON.stringify(result);

                    const parsed = JSON.parse(jsonString);

                    var createDate = new Date(result.Device.DeviceCreateDate);

                    var today = new Date();

                    if (today.getDate() - createDate.getDate() == 1) {

                        cognitoUser.forgetDevice({

                            onSuccess: function (result) {

                                console.log('forgetDevice: ' + result);

                            },

                            onFailure: function (err) {

                                alert(err.message || JSON.stringify(err));

                            },

                        });

                    }

                }