doroidpanic

AWS – Cognitoでemailを変更した場合、認証してなくても古いメアドはログインできない

Cogitoを使った認証でユーザが登録後に、メアドを変更する際に
入力ミスで違うメアド入れちゃったけど、アプリからはログアウトしちゃった
という状況はどうなるのか?

javascriptでテストしてみる。

まずユーザを登録する。

var attributeList = [];
attributeList.push(new AWSCognito.CognitoIdentityServiceProvider.CognitoUserAttribute({
	Name: 'name',
	Value: $('#name').val()
}));
attributeList.push(new AWSCognito.CognitoIdentityServiceProvider.CognitoUserAttribute({
	Name: 'email',
	Value: $('#email').val()
}));
userPool.signUp($('#email').val(), $('#password').val(), attributeList, null, function(err, result) {
	if (err) {
		console.log(err);
		return;
	}
	cognitoUser = result.user;
	console.log('Username:' + cognitoUser.getUsername());
});

登録後、認証コードが送られてくるので、認証コードを登録してメールアドレスを認証済みにする。


Cognitoで見ると、メールアドレスは認証済みになっているので
そのユーザでログインして、メールアドレスの変更を行う。


認証コードが新しいメールアドレスに送信されるが
それを認証せずに、古い情報でログインしようとすると


認証エラーが発生してログインできない。

Cognito上ではメアドは変更されていて、認証済みが取り消されている。
これに対応するにはdynamoで管理するか、cognitoに追加の属性を持たせて、認証や変更トリガーでmail属性を認証後にアップデートするようにしました。