Рубрики
Без рубрики

Курс скидки на защиту API с сервезой с Web Json Web

Что такое глоток титула. Разве вы не согласились бы? В этом прохождении вы узнаете о закреплении конечных точек без сервеса с помощью JSON WEB TOKENS. Это будет включать в себя базовую настройку API Bersless Read с несколькими конечными точками, и, конечно, функция авторизации. Этот авторитет будет действовать

Автор оригинала: FreeCodeCamp Community Member.

Что такое глоток титула. Разве вы не согласились бы? В этом прохождении вы узнаете о закреплении конечных точек без сервеса с помощью JSON WEB TOKENS.

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

Во время процесса создания мы будем использовать Смертная рамка для моделирования среды развития, как вы привыкли. Удаление руководства Мы также настроим инструмент мониторинга под названием Dashbird Отказ Это позволит нам имитировать возможности отладки и обзор регулярного приложения Node.js таким образом, что естественно и легко понять. У этого также есть свободный уровень И не требует кредитной карты для настройки.

Если то, что я только что упомянул выше, – это новый для вас, не волнуйся. Я объясню это все ниже. В противном случае вы можете освежить свои знания, посмотрев на эти учебники:

TL; доктор

Прежде чем прыгать в голову сначала, вы можете сильно повредить свои чувства и только прочитать этот TL; DR. Или продолжите читать всю статью. ❤.

Готовый? Давайте прыгнем!

Создание API

Прежде всего, нам нужно создать бессвесовую структуру для нашей местной среды развития. Эта рамка является де-факто Рамки для всех вещей, связанные с безмерными архитектурами. Перейти к их сайт И следуйте инструкциям, чтобы настроить его или ссылку на Статья, которую я связал выше Отказ

Процесс установки невероятно прост. Вы настраиваете роль управления AWS в вашей учетной записи AWS и связываете его с вашей установкой безвесовой структуры. Фактический процесс установки просто работает одна простая команда.

Выпустите окно терминала и запустите команду ниже.

$ npm install -g serverless

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

$ sls create -t aws-nodejs -p api-with-auth

Приведенная выше команда будет генерировать необходимый код котельной.

Перейдите в недавно созданный каталог, называемый API-S-auth И откройте его с вашим редактором кода выбора.

$ cd api-with-auth

После открытия вы увидите два основных файла. А Handler.js и а Serverless.yml файл. Handler.js содержит нашу логику приложения во время Serverless.yml Определяет наши ресурсы.

Теперь пришло время установить некоторые зависимости, чтобы настроить нашу необходимую необходимые методы аутентификации/авторизации, шифрование паролей и ORM для взаимодействия базы данных.

$ npm init -y$ npm install --save bcryptjs bcryptjs-then jsonwebtoken mongoose

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

$ npm install --save-dev serverless-offline

Прекрасный!

Добавление базы данных

Для постоянного хранилища данных мы просто будем захватить хостованный экземпляр MongoDB на Монгодб Атлас Отказ Вот Ссылка на статью, где я объяснил это подробно.

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

Это довольно простая реализация установления соединения базы данных, если подключение не существует. Но, если он существует, я буду использовать уже установленную связь. Вы видите Process.env.db ? Мы будем использовать пользовательский Secrets.json файл, чтобы сохранить наши личные ключи из GitHub, добавив его в .gitignore Отказ Этот файл будет загружен в Serverless.yml Отказ На самом деле, давайте сделаем это сейчас.

Добавьте строку подключения MongoDB к дБ поле.

С этим файлом создан, давайте перейдем к Serverless.yml Отказ Откройте его и удалите все код котеля, чтобы мы могли начать свежим. Тогда идите вперед и вставьте это.

Как видите, это просто простой конфигурация настройки. Пользовательские Раздел говорит главной конфигурации, чтобы захватить значения из Secrets.json файл. Мы добавим этот файл в .gitignore Потому что толкая частные ключи в GitHub – это смертельный грех, наказуемый смертью! Не совсем, но все же, не выдвигайте ключи в Github. Серьезно, пожалуйста, не делайте.

Добавление функций

Просто крошечный бит настроили влево, чтобы сделать, прежде чем прыгать в бизнес-логику! Нам нужно добавить определения функций в Serverless.yml Прямо ниже раздел поставщиков мы добавили выше.

В общей сложности пять функций.

  • Verifytoken.js будет содержать .АУТ Способ проверки достоверности JWT проходил вместе с запросом к серверу. Это будет наше Авторизатор функция. Концепция того, как работает авторизатор, очень похоже на то, как промежуточное программное обеспечение работает в простых старых базовых Express.js. Просто шаг между сервером, получающим запрос и обработку данных, которые будут отправлены обратно клиенту.
  • Вход и Регистрация Функции будут делать основную аутентификацию пользователя. Мы добавим бизнес-логику для тех, кто в Authhandler.js файл.
  • Тем не менее, я Функция ответит с текущим аутентифицированным пользователем на основе предоставленного токена JWT. Вот где мы будем использовать Авторизатор функция.
  • GetUsers Функция – это просто универсальная публичная API для получения зарегистрированных пользователей из базы данных.

От Serverless.yml Файл выше Вы можете разглядеть грубую структуру проекта. Чтобы сделать это более понятнее, посмотрите на изображение выше.

Делает немного больше смысла сейчас? Движение дальше, давайте добавим логику для получения пользователей.

Добавление бизнес-логики для пользователей

Вернуться в свой редактор кода, удалите Handler.js Файл и создайте новую папку, называющую его Пользователь Отказ Здесь вы добавите User.js Файл для модели и A Userhandler.js для фактической логики.

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

Как только модель будет сделана, пришло время добавить базовую логику.

Это немного сложно выяснить, когда вы видите это в первый раз. Но давайте начнем с вершины.

Требуя от db.js У нас есть доступ к соединению базы данных на Mongodb Atlas. С нашей пользовательской логикой для проверки соединения мы позаботились не создавать новое соединение, как только один не будет установлен.

GetUsers Функция HELPER получит только всех пользователей, а module.exports.getUsers Функция лямбда будет подключаться к базе данных, запустить функцию HELPER и вернуть ответ обратно на клиент. Это более чем достаточно для Userhandler.js Отказ Настоящее веселье начинается с Authprovider.js Отказ

Добавление аутентификации

В корне вашего сервиса создайте новую папку под названием auth Отказ Добавить новый файл под названием Authhandler.js Отказ Этот обработчик будет содержать основную логику аутентификации для нашего API. Не тратите больше времени, продолжайте и вставьте этот фрагмент в файл. Эта логика позволит регистрации пользователя, сохраняя пользователь в базу данных и возвращая токену JWT клиенту для хранения в будущих запросах.

Сначала нам требуются зависимости, и добавьте module.exports.register функция. Это довольно просто. Мы снова подключаем к базе данных, регистрируя пользователя и отправляя обратно объект сеанса, который будет содержать токен JWT. Посмотрите на местные Регистрация () Функция, потому что мы еще не объявили. Более со мной еще несколько секунд, мы доберемся до него в мгновение.

С помощью основной структуры установлена правильно, давайте начнем с добавления помощников. В том же Authhandler.js Файл идти вперед и вставьте это тоже.

Мы создали три функции помощника для подписания токена JWT, проверяя пользовательский ввод и создавая пользователя, если они еще не существуют в нашей базе данных. Прекрасный!

С Регистрация () Функция завершена, нам все еще нужно добавить Войти () Отказ Добавьте module.exports.login Чуть ниже функций Комментарий.

Еще раз у нас есть локальная функция, на этот раз по имени Войти () Отказ Давайте добавим это также под помощниками комментариев.

Потрясающие! Мы также добавили помощников. С этим мы добавили Аутентификация нашему API. Так просто как это. Теперь у нас есть модель аутентификации на основе токена с возможностью добавления авторизации. Это будет наш следующий шаг. Подожди!

Добавление авторизации

С добавлением Verifytoken.js Файл, мы можем предоставить всю логику авторизации как отдельное промежуточное программное обеспечение. Очень удобно, если мы хотим продолжать отделение проблем. Продолжайте и создайте новый файл под названием Verifytoken.js В auth папка.

У нас есть единая функция, экспортированная из файла, называемая module.exporst.auth с обычными тремя параметрами. Эта функция будет действовать как промежуточное программное обеспечение Отказ Если вы знакомы с Node.js, вы узнаете, что такое промежуточное программное обеспечение, иначе, проверьте это для более подробного объяснения.

Уполномоченность Наш JWT будет передан на промежуточное программное обеспечение через мероприятие. Мы просто присваиваем это локальную константу для более легкого доступа.

Вся логика здесь – просто проверить, действителен ли токен и отправить обратно сгенерированную политику, вызывая GeneratePolicy функция. Эта функция требуется AWS, и вы можете схватить его из разных документов на AWS и из неверной рамки Примеры GitHub Page Отказ

Это важно, потому что мы проходим по декодировать наряду в Обратный вызов Отказ Значение, следующая функция лямбда, которая сидит за нашими VerifyToken.auth Авторизатор Функция будет иметь доступ к декодировать в его событие параметр. Удивительно, верно!?

После того, как у нас будет проверенная проверка токена, все, что осталось, если добавить маршрут, чтобы сесть за Авторизатор функция. Ради простоты, давайте добавим Маршрут, чтобы захватить в настоящее время зарегистрированный пользователь на основе JWT, прошедший вдоль Получить запрос.

Прыгать назад к Authhandler.js Файл и вставьте это.

Потрясающие! Последняя ламбда, мы добавим в этот учебник, будет module.exports.me Отказ Это просто хватает UserID пропущено из Авторизатор и позвоните в я Функция помощника во время прохождения в UserID Отказ я Функция будет схватить пользователя из базы данных и вернуть ее обратно. Все module.exports.me Lambda делает просто извлекает текущий аутентифицированный пользователь. Но конечная точка защищена, то есть только действительный токен может получить доступ к нему.

Большая работа следующая на самом деле, давайте разверним ее, чтобы мы могли сделать некоторые тестирование.

Развертывание

Надеюсь, вы настроили свою учетную запись AWS для работы с Serverless Framework. Если у вас есть, есть только одна команда для запуска, и вы устанавливаете.

$ sls deploy

Вуаля! Дождитесь его развертывания и начните наслаждаться всеми серверу API с помощью API JWT аутентификации и авторизации.

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

Тестирование

Последний шаг в любом процессе разработки в идеале должен быть уверен, что все работает, как следует. Это не исключение. Один из двух инструментов, которые я использую для тестирования моих конечных точек, это Бессонница Отказ Итак, я пойду вперед и открою его. Но вы можете использовать Почтальон или любой другой инструмент, который вам нравится.

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

В вашем терминале запустите простую команду:

$ sls offline start --skipCacheInvalidation

Но мне нравится идти хардкор! Давайте тестируем непосредственно на развернутых конечных точках.

Начало медленно, сначала нажмите /Регистрация Конечная точка с Пост запрос. Обязательно отправьте полезную нагрузку как JSON. Хит Отправить И вы получите токен обратно! Хорошо, просто то, что мы хотели.

Скопируйте токен и теперь нажмите Конечная точка с Получить запрос. Не забудьте добавить токен в заголовки с Авторизация ключ.

Вы получите текущий пользователь, отправляемый к вам. И там это. Прекрасный.

Просто чтобы убедиться, что другие конечные точки также работают, идите вперед и нажмите /Вход конечная точка с теми же учетными данными, что и с /Регистрация Конечная точка вы ударили совсем недавно.

Это работает? Конечно, это делает. Там у нас есть, полностью функциональная система аутентификации и авторизации, реализуемая в среде без сервеса с Jwt и Авторизеры Отказ Все, что осталось, это добавить способ следить за всем.

Мониторинг

Я обычно контролирую мои лямбдас с Dashbird Отказ Это отлично подходит для меня. Моя точка зрения для того, чтобы показать вам, что вы также увидите, что консольные журналы из лямбда-функциональных вызовов. Они покажут вам, когда лямбда использует новое или существующее соединение с базой данных. Вот как выглядит главная приборная панель, где я вижу все мои лямбдаса и их статистику.

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

Нажатие на вызов холодного запуска приведет вас к странице вызова, и вы увидите хороший журнал, который говорит => Использование новой базы данных Connect ион.

Теперь немного обратно и выберите один из вызовов, которые не холодно. Проверка журналов для этого вызова покажет вам => Использование существующей базы данных Connect ион.

Хороший! У вас есть правильное понимание вашей системы!

Обертывание

Удивительно, что вы можете сделать с несколькими приятными инструментами. Создание API отдыха с аутентификацией и авторизацией производится простыми с Смертный , JWT, MongoDB и Dashbird Отказ Большая часть подхода к этому руководству было вдохновлено некоторыми из моих предыдущих учебных пособий. Не стесняйтесь проверять их ниже.

Аднан Рахич – средний Читайте письма из Аднан Рахича на среднем. Соучредителем @bookvar_co. Учитель @ академия387. Автор @packtpub. Лидер для кемпинга … Medium.com.

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

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

Надеюсь, вы, ребята, и девочки наслаждались читать это так же сильно, как мне нравилось писать. Как вы думаете, что это учебное пособие будет поможет кому-то? Не стесняйтесь делиться. Если вам это понравилось, разбить хлопать Ниже так другие люди увидят это здесь на среднем.