Вы никогда не можете быть слишком уверены в своей безопасности в Интернете. Хорошая новость заключается в том, что большинство компаний начинают активно предотвращать попытки взлома пользователей, уведомляя их о подозрительных действиях при входе в систему. Некоторые банки даже информируют пользователей о каждой попытке входа в систему, и мне это нравится.
На данный момент большинство пользователей получили по крайней мере одно электронное письмо от таких сервисов, как Gmail или Twitter, в котором сообщается о входе в свою учетную запись, что-то вроде изображения ниже.
В этой статье вы узнаете, как настроить нечто подобное для своего приложения с помощью Auth0 Actions. Действия Auth0 — это функции JavaScript, которые можно подключать на разных этапах процесса аутентификации, например при регистрации пользователя, входе в систему и сбросе пароля, чтобы расширить функциональность по умолчанию. Действия Auth0 позволяют вам использовать сторонние библиотеки и хранить секреты для использования в вашем коде.
Возможно, вы уже догадались, к чему я клоню, но позвольте мне нарисовать для вас картину (буквально). Действие Auth0 будет выполняться после того, как будет инициирован вход в систему, и отправит электронное письмо непосредственно перед завершением процесса входа в систему, как показано ниже.
В этом примере действие будет уведомлять пользователя по электронной почте, но вы также можете отправить SMS или что-то еще — нет предела возможностям, друг мой.
Предпосылка
Чтобы следовать этому примеру, вам нужна учетная запись Auth0. Вы можете подписаться на бесплатную, если у вас ее нет. Вам также понадобится служба отправки электронной почты, такая как Sendgrid, чтобы отправить электронное письмо.
Настройка действия Auth0
Чтобы настроить действие,
- Откройте панель управления Auth0.
- Выберите параметр Действия › Потоки на левой панели навигации и нажмите Создать пользовательский.
3. Заполните форму «Создать действие» **, как показано ниже, и нажмите кнопку **Создать.
4. Добавьте пакет @sendgrid/mail
npm в раздел зависимостей редактора.
5. Добавьте SENDGRID_API_KEY
в раздел секретов.
6. Обновите функцию onExecutePostLogin
в редакторе кода, как показано ниже. Объект event
предоставляет необходимую информацию, такую как сохраненные секреты, электронная почта, имя, IP-адрес используемого устройства и геолокация. Подробнее об объекте event
можно прочитать в документации.
exports.onExecutePostLogin = async (event) => {
const sgMail = require('@sendgrid/mail')
sgMail.setApiKey(event.secrets.SENDGRID_API_KEY)
const { user, request } = event;
const { ip, geoip } = request;
const msg = {
to: user.email, // Change to your recipient
from: "[email protected]", // Change to your verified sender
subject: `Recent login from ${geoip.cityName}, ${geoip.countryCode}`,
html: `Hi ${user.name}, your account has been logged in recently from <b>${geoip.cityName}</b>, <b>${geoip.countryCode}</b> from IP address <b>${ip}</b>.`,
};
sgMail
.send(msg)
.then(() => console.log("Sent successfully"))
.catch((err) => {
console.log(err);
});
};
7. Нажмите кнопку Развернуть, чтобы активировать действие.
8. Пришло время протестировать действие. Войдите в свое приложение
9. Вы можете открыть раздел Мониторинг › Журналы на панели управления Auth0, чтобы просмотреть сведения о выполнении действий.
Заключение
В этой статье вы узнали о действиях Auth0 и о том, как легко вы можете создать их для отправки уведомлений о входе своим пользователям. Auth0 — это ведущая платформа аутентификации и авторизации, которая предоставляет разработчикам такие функции, как вход через социальные сети, управление пользователями и вход без пароля. Вы можете бесплатно зарегистрироваться на Auth0, чтобы попробовать этот пример или поэкспериментировать со своим собственным.
Я надеюсь, что вы найдете эту статью полезной! Если у вас есть какие-либо отзывы или вопросы, вы можете задать их в комментариях ниже. Чтобы узнать больше таких статей, следите за мной в Твиттере.
До следующего раза!
Первоначально опубликовано на https://dev.to 21 августа 2022 г.
Дополнительные материалы на PlainEnglish.io. Подпишитесь на нашу бесплатную еженедельную рассылку новостей. Подпишитесь на нас в Twitter, LinkedIn, YouTube и Discord.