Я написал, все работает:
https://rextester.com/HQDIRY8731
Но... После того как пользователь уже авторизовался, при последующей авторизации можно не вводить правильный пароль... Зачем, когда проверки нету?
А так же насчет этих челленджов. Я чувствую себя тупым создав просто объект куда буду кидать эти челленджы и ждать пока пользователь введет код чтобы использовать метод .code этого челленджа...