Как использовать авторизацию для node.js службы?

#node.js

#node.js

Вопрос:

Я написал несколько Node.js службы, доступные по протоколу http.

Одной из них является служба загрузки файлов.

Пользователь может отправить запрос к определенному конечному элементу и загрузить файл.

Как запретить использование службы неавторизованным пользователям?

Итак, теперь любой может отправить файл в службу.

  1. Как это практически сделать для некоторых служб node.js ?
  2. Какие еще функции безопасности следует учитывать?

Комментарии:

1. Используете ли вы какой-либо фреймворк, например Express? Одним из способов сделать это является JWT , подобный express-jwt для Express.

2. Да, я использую это, но некоторые службы используют только http lib

3. Интересно, как это сделать профессионально

4. Общий подход заключается в использовании промежуточного программного обеспечения, которое проверяет наличие некоторых учетных данных при каждом входящем запросе (для которого требуется аутентификация). Учетные данные могут быть либо чем-то, что предоставляется вручную при каждом вызове API (например, определенным http-заголовком), либо это может быть что-то, что устанавливается один раз, а затем помещается в файл cookie, который поступает автоматически при каждом запросе (в зависимости от клиента).

5. Вы также можете использовать пакеты npm, не относящиеся к конкретной платформе, для использования JWT. Я могу порекомендовать jsonwebtoken npmjs.com/packa&e/jsonwebtoken .

Ответ №1:

Поскольку вы хотите, чтобы некоторые конечные точки были частными, чтобы вы могли запретить использование службы неавторизованными пользователями. кроме того, вы используете Express, но некоторые службы используют только HTTP-библиотеку.

если вы хотите использовать JWT: jsonwebtoken (https://www.npmjs.com/packa&e/jsonwebtoken)

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

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

Я понимаю, что ответ не просто «использовать X», потому что у меня нет конкретного представления о том, что вы можете использовать в своей системе в том виде, в каком вы используете (express, а также иногда core HTTP library ). если вы столкнулись с какой-либо проблемой или не понимаете какого-либо пункта, дайте мне знать. Я сделаю все возможное, чтобы помочь.

Комментарии:

1. Привет, где следует разместить jwt? Как отдельный общий сервер, например http-маршрутизатор, для конкретной службы? Идея не дублировать логику jwt в каждом сервисе node.js она должна находиться на другом уровне, отделенном друг от друга

2. Если использовать jwt, это означает отправлять токен в каждом http-запросе сервису?

3. Процесс входа в систему создаст JWT и отправит его с заголовком ответа в виде файлов cookie. После этого при каждом запросе от пользователя файл cookie будет автоматически отправляться на сервер. Вы должны проанализировать файл cookie, а затем проверить JWT-файл cookie . Это проверка cookie JWT. Это должно выполняться каждый раз, когда кто-то попадает на защищенные маршруты (частные ссылки). Но она будет создана один раз и будет действительна в течение 15, 30, 60 минут или более в зависимости от вашего варианта использования

4. Вы должны создать промежуточное программное обеспечение для защищенных маршрутов, и промежуточное программное обеспечение проверит cookie и примет JWT, затем аутентифицирует JWT .

5. Промежуточное программное обеспечение — это функция, которая находится между двумя функциями. Например, function1-&&t; промежуточное программное обеспечение-&&t;function2.