Coder Social home page Coder Social logo

auth-server-nodejs's Introduction

Auth server

First installation

npm i -s express mongoose morgan body-parser nodemon

Tech stack

Low-level request handling

  • HTTP module Nodejs (handle http requests)

Routing, Server logic

  • body-parser
  • morgan (logging)
  • express

Database

  • MongoDB (database)
  • mongoose (Working with MongoDB)

Authentication

  • PassportJS (auth users)
  • Passport-Local (auth users with a username/password)
  • Passport-JWT (auth users with a JWT)
  • Bcrypt Nodejs(storing a users password safely)
  • brew install mongodb
  • sudo mkdir -p /data/db
  • sudo chown -R $USER /data/db
  • mongod (start MongoDB)

Soling the password

При сохранении в БД нового пользователя генерируем модификатор.

Объеденяем модификатор(salt) и текстовый пароль. Получаем хешированый пароль.

Salt + Plain text password = "Salt + Hashed password"

Хешированный пароль сохраняем в БД.

Example:

Salt:

$2a$10$mIUG8P62XcomQZ3b.ISzNO

Hashed password:

.hz4xZvWt/H.opP.0KLBf5.pHonGB1G

RESULT:

$2a$10$mIUG8P62XcomQZ3b.ISzNO.hz4xZvWt/H.opP.0KLBf5.pHonGB1G

JWT

npm i -s jwt-simple or npm i jsonwebtoken (Only for NodeJS)

Генерация токена подразумевает что проверка пары логин/пароль прошла успешно.

При регистрации или входе в систему отдать токен в обмен на id пользователя.

Берем id пользователи и шифруем вместе секретным словом. Получаем токен и отсылаем его клиенту.

User ID + Secret String = "JSON Web Token"

Когда пользователь делает запрос на аутентификацию сервер должен прислать токен

JSON Web Token + Secret String = User ID

Пользователь запрашивает ресурс системы. Отсылает токен обратно на сервер.

Сервер складывает токен и секретное слово.

И получает ID пользователя.

Система знает какие права и доступ к ресурсам есть у пользователя в данный момент. В ответ пользователь получает запрашиваемый ресурс.

Passport js

npm i passport

JWT strategy

npm i passport-jwt

Local strategy

npm i passport-local

Стратегии

Регистрация пользователя:

  • клиент передает логин/пароль
  • сервер проверяет существование логина в БД

Если логина нет:

- создаем нового пользователя
- генерируем токен
- отдаем токен пользователю на клиент

Если логин есть:

- отдаем ответ: логин используется

Вход пользователя:

Используем local strategy

Доступ к ресурсу:

Используем JWT strategy

auth-server-nodejs's People

Contributors

pavelusov avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.