Полное руководство по установке.
Полная ссылка на статью: https://medium.com/@jacobjoy/redirect-user-using-amazon-cognito-confirmation-url-d8ccb11bac75
Спасибо @yasith, начиная с простого изображения, чтобы прояснить, как мы делаем эту работу,
Шаг 1. Создайте лямбда-функцию на языке по вашему выбору. В следующем примере я буду использовать node.js. Прежде чем продолжить, прочтите "Пользовательский лямбда-триггер сообщения", https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-lambda-custom-message.html В этом примере я обрабатываю только CustomMessage_SignUp, который вы можете настроить для других, например CustomMessage_ForgotPassword и т. Д. В соответствии с вашими требованиями. Скопируйте приведенный ниже код в свою лямбда-функцию,
// Creating a custom URL for the user
exports.handler = (event, context, callback) => {
if(event.triggerSource === "CustomMessage_SignUp") {
const { codeParameter } = event.request;
const { userName, region } = event;
const { clientId } = event.callerContext;
const { email } = event.request.userAttributes;
const url = 'https://xxxxxxx.execute-api.eu-west-2.amazonaws.com/prod/redirect'
const link = `<a href="${url}?code=${codeParameter}&username=${userName}&clientId=${clientId}®ion=${region}&email=${email}" target="_blank">Click the link to verify</a>`;
event.response.emailSubject = "Your verification link";
event.response.emailMessage = `Thank you for signing up. Click ${link} to verify your email.`;
}
// CallBack to the lambda for the email trigger
callback(null, event);
};
Примечание. Константный URL следует обновить после настройки шлюза API.
Шаг 2: Под Cognito Trigger выберите настраиваемое сообщение и выберите созданную вами лямбда-функцию.
Шаг 3. Создайте GET API в своем API-шлюзе. Не устанавливайте авторизацию и не активируйте требуемый ключ API.
Шаг 4: Создайте еще одну лямбда-функцию для проверки и подтверждения пользователя.
'use strict';
var AWS = require('aws-sdk');
AWS.config.setPromisesDependency(require('bluebird'));
var CognitoIdentityServiceProvider = new AWS.CognitoIdentityServiceProvider({
apiVersion: '2019-11-07',
region: process.env.REGION
});
exports.handler = (req, context, callback) => {
console.log(req);
const confirmationCode = req.code;
const username = req.username;
const clientId = req.clientId;
let params = {
ClientId: clientId,
ConfirmationCode: confirmationCode,
Username: username
};
//Validating the user
let confirmSignUp = CognitoIdentityServiceProvider.confirmSignUp(params).promise();
//Returning the redirect url
confirmSignUp.then(
(data) => {
context.succeed({
location: process.env.POST_REGISTRATION_VERIFICATION_REDIRECT_URL
});
}
).catch(
(error) => {
callback(error.message)
}
)
};
Создайте приложение узла в IDE по вашему выбору, а затем выполните сборку с помощью npm install и после сборки вашего приложения. Создайте zip-архив (в корневой папке 5 файлов примерно в зависимости от вашей среды IDE) и загрузите его в свое лямбда-приложение.
Метод Lambda Handler должен быть = index.handler
Установите следующее в переменной lambda env
POST_REGISTRATION_VERIFICATION_REDIRECT_URL REGION
В своем приложении вы проверяете пользователя в своем пуле пользователей когнитивного анализа и возвращаете URL-адрес для перенаправления. Не в области действия: сценарий ошибки также можно обработать в соответствии с вашими требованиями.
Шаг 5: вернитесь к шлюзу API, создайте запрос GET и вставьте лямбда-функцию, которую вы должны создать на шаге 4, и обновите шаблон сопоставления.
Шаг 6: Теперь мы должны перенаправить запрос на основе вашего лямбда-ответа. В разделе «Ответ метода» на шлюзе API удалите 200, создайте 302 и добавьте местоположение заголовка ответа в соответствии с изображением,
А затем в ответе интеграции вам нужно удалить 200 и добавить 302, а затем добавить значение сопоставления заголовка как integration.response.body.location (Помните о регистре символов)
Самый важный шаг: после завершения настройки. Разверните API и обновите константный URL API в лямбда-функции, созданной на шаге 1.
Попробуйте создать тестового пользователя, и у пользователя должна быть ссылка на электронную почту, например, https://xxxx-api.eu-west-2.amazonaws.com/xx/xx/xx/redirect?code=xx & username = xxxxx; clientId = xxxxx; регион [email protected]
person
Jacob Joy
schedule
17.12.2019