Я разрабатываю собственный поток авторизации в aws cognito с лямбда-триггерами.
Я использовал пример кода, заданного aws для лямбда-триггеров DefineAuthChallenge_Authentication
, CreateAuthChallenge_Authentication
и VerifyAuthChallenge_Authentication
, это даже объясняется вв этом ответе Пул пользователей AWS Cognito без пароля
Но когда я вхожу из внешнего интерфейса с усилением, он говорит: {code: "InvalidLambdaResponseException", name: "InvalidLambdaResponseException", message: "Unrecognizable lambda output"}
После вызова Определить аутентификацию при создании аутентификациивызов вызывается не в event.request.session, это пустой массив.Атрибут challengeName просто присутствует в event.response, как показано ниже,
triggerSource: 'CreateAuthChallenge_Authentication',
request:
{ userAttributes:
{ sub: 'xxxxx-xxxxx-xxxx',
'cognito:user_status': 'CONFIRMED',
name: 'sala',
phone_number_verified: 'true',
'cognito:phone_number_alias': '+947xxxxxxxxx',
phone_number: '+947xxxxxxxxx' },
challengeName: 'CUSTOM_CHALLENGE',
session: [] },
Ниже приведен мой заданный запрос проверки подлинности, `
exports.handler = async event => {
if (
event.request.session &&
event.request.session.length >= 3 &&
event.request.session.slice(-1)[0].challengeResult === false
) {
// The user provided a wrong answer 3 times; fail auth
event.response.issueTokens = false;
event.response.failAuthentication = true;
} else if (
event.request.session &&
event.request.session.length &&
event.request.session.slice(-1)[0].challengeResult === true
) {
// The user provided the right answer; succeed auth
event.response.issueTokens = true;
event.response.failAuthentication = false;
} else {
// The user did not provide a correct answer yet; present challenge
event.response.issueTokens = false;
event.response.failAuthentication = false;
event.response.challengeName = 'CUSTOM_CHALLENGE';
}
return event;
};