Ознакомьтесь со всеми другими моими сообщениями в разделе Мои технические статьи.

Аутентификация, вероятно, одна из самых сложных тем для новичка. Этот пост написан для того, чтобы представить более полную картину аутентификации пользователей, чтобы вы, как новичок, не чувствовали себя такими потерянными, как я.

Упомянутая ниже аутентификация на основе сеанса является общей для разных языков.

Темы для обсуждения

  1. Почему аутентификация пользователя слишком сложна для новичка
  2. Каковы предварительные условия, прежде чем приступать к аутентификации
  3. Введение в аутентификацию
  4. Различные типы аутентификации
  5. Процесс аутентификации на основе сеанса
  6. Примечание перед окончанием
  7. Ссылка

Почему аутентификация пользователей является подавляющей

Пару недель назад я чувствовал себя подавленным, изучая аутентификацию в Free Code Camp. Следуя их инструкциям, я вводил множество кодов, о которых понятия не имел.

Появилось так много новой терминологии, например, сессия, хранилище сессий, экспресс-сессия, паспорт, стратегия, сериализация, десериализация и т. д.

Затем учебный материал перешел к рефакторингу кода, что сделало ситуацию еще более туманной. Я уже понятия не имел о коде, и теперь он абстрагирован.

Я чувствовал себя подавленным, потому что у меня не было целостного представления об аутентификации, а вместо этого я был завален слишком большим количеством деталей реализации.

Мне нужно вернуть контроль. Чего мне не хватало?

Предпосылки

Оказалось, что основ довольно много. Невозможно понять их все за один присест, по крайней мере, не для меня. Мне потребовался месяц, чтобы наконец понять процесс аутентификации.

Этих предпосылок довольно много, поэтому я не буду подробно рассматривать их в этом посте. Вместо этого я перечислю, какую концепцию вы должны выбрать, прежде чем работать над следующей, с некоторыми ссылками.

  1. Что такое промежуточное ПО в среде Express? Что он делает и как его реализовать?
    Вот мой пост объяснить промежуточное ПО за одну минуту. Это даст вам ясное представление о том, что это такое. После этого вы можете прочитать официальный документ Express по написанию промежуточного ПО и использованию промежуточного ПО.
  2. Что такое сессия, экспресс-сессия и хранилище сессий?
    Мне очень помогло это видео на YouTube, созданное Заком и Free Code Camp. Посмотрите часть, где он представляет экспресс-сеансы.
    Позвольте дать вам подсказку. Сессия, экспресс-сессия и хранилище сессий: одна из них — не концепция, а просто библиотека для реализации концепции.
  3. Что такое файлы cookie? Какая связь между файлом cookie и сеансом?
    Вот мой пост, посвященный кэшу, файлу cookie и веб-хранилищу на стороне клиента. Вы можете просто посмотреть часть, посвященную cookie, и пропустить остальное.
    После этого погуглите, чтобы выяснить взаимосвязь между cookie и сеансом.
  4. (необязательно, но в большинстве случаев он вам понадобится) Как использовать Mongoose для управления MongoDB или MongoDB Atlas?
    Вот мой пост представление MongoDB Atlas и Мангуст.

Прежде чем продолжить чтение, убедитесь, что вы действительно понимаете приведенные выше предварительные условия.

Введение в аутентификацию

Аутентификация — это процесс определения того, является ли кто-то тем, за кого себя выдает. Это, на самом деле, довольно распространенный сценарий в нашей жизни.

Например, когда мы едем в другую страну, нам нужно предоставить наш паспорт местному таможеннику. Паспорт является подтверждением моей личности. Другими словами, я использую паспорт, чтобы сообщить таможеннику, что я Чанг Ю-Мин из Тайваня.

Когда дело доходит до Интернета, клиентское устройство отправляет HTTP-запрос с сертификатом, чтобы подтвердить, кто они такие. Этот сертификат предоставляется не самим клиентом, а сервером. Точно так же мы не печатаем собственный паспорт, а подаем его из Министерства иностранных дел.

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

Различные типы аутентификации

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

Например, нам, вероятно, нужно вынуть нашу VIP-карту, чтобы служащий отеля или продавец в Arc'teryx знали, кто мы. Паспорт, однако, не даст нам никаких особых предложений в этом сценарии.

Точно так же, как мы могли бы использовать паспорт или VIP-карту, чтобы доказать, кто мы, для другого сценария, также существуют разные способы реализации аутентификации в Интернете:

  • Аутентификация на основе сеанса часто используется при обмене данными между клиентом и сервером.
  • в то время как аутентификация на основе токенов часто используется для связи между серверами.

Давайте углубимся в сеансовую аутентификацию.

Процесс аутентификации на основе сеанса

Блок-схема выше описывает общий процесс аутентификации. Возможно, вы захотите использовать эту ссылку, чтобы просмотреть лучшее разрешение на диске Google.

Когда у клиента нет сертификата

  • пользователи вводят учетные данные для входа и отправляют
  • клиент отправляет запрос с учетными данными для входа
  • сервер получает запрос и проверяет, действительны ли эти учетные данные для входа
  • если он действителен, сервер создает сеанс и прикрепляет этот идентификатор сеанса к ответу (идентификатор сеанса — это сертификат)
  • клиент получает ответ сервера и сохраняет идентификатор сеанса в виде файлов cookie

После того, как клиент получит сертификат

  • Поскольку клиент хранит сертификат в виде файлов cookie, а файлы cookie всегда отправляются с запросом, все последующие запросы от этого клиента будут приносить с собой этот сертификат.
  • Когда сервер получает запрос с сертификатом, он проверяет, действителен ли этот сертификат, запрашивая данные сеанса.
  • Если сертификат действителен, то сервер возвращает то, что запрашивает запрос.

Клиент также может активно удалить сертификат до истечения срока его действия, выйдя из системы.

  • Когда сервер получает запрос на выход из сертификата, он просто ищет связанные данные сеанса и удаляет их.

Примечание перед окончанием

Логика использования Passport.js имела для меня большой смысл, когда я понимаю целостный взгляд на процесс аутентификации.

Если эта статья поможет вам достичь «момента ага» с аутентификацией на основе сеанса, пожалуйста, хлопайте в ладоши, чтобы поделиться со мной своими впечатлениями!

Ссылка