Вы никогда не можете быть слишком уверены в своей безопасности в Интернете. Хорошая новость заключается в том, что большинство компаний начинают активно предотвращать попытки взлома пользователей, уведомляя их о подозрительных действиях при входе в систему. Некоторые банки даже информируют пользователей о каждой попытке входа в систему, и мне это нравится.

На данный момент большинство пользователей получили по крайней мере одно электронное письмо от таких сервисов, как Gmail или Twitter, в котором сообщается о входе в свою учетную запись, что-то вроде изображения ниже.

В этой статье вы узнаете, как настроить нечто подобное для своего приложения с помощью Auth0 Actions. Действия Auth0 — это функции JavaScript, которые можно подключать на разных этапах процесса аутентификации, например при регистрации пользователя, входе в систему и сбросе пароля, чтобы расширить функциональность по умолчанию. Действия Auth0 позволяют вам использовать сторонние библиотеки и хранить секреты для использования в вашем коде.

Возможно, вы уже догадались, к чему я клоню, но позвольте мне нарисовать для вас картину (буквально). Действие Auth0 будет выполняться после того, как будет инициирован вход в систему, и отправит электронное письмо непосредственно перед завершением процесса входа в систему, как показано ниже.

В этом примере действие будет уведомлять пользователя по электронной почте, но вы также можете отправить SMS или что-то еще — нет предела возможностям, друг мой.

Предпосылка

Чтобы следовать этому примеру, вам нужна учетная запись Auth0. Вы можете подписаться на бесплатную, если у вас ее нет. Вам также понадобится служба отправки электронной почты, такая как Sendgrid, чтобы отправить электронное письмо.

Настройка действия Auth0

Чтобы настроить действие,

  1. Откройте панель управления Auth0.
  2. Выберите параметр Действия › Потоки на левой панели навигации и нажмите Создать пользовательский.

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.