17.2. Autenticação e autorização em API's NodeJS: Autorização com roles e permissões

Página 100

17.2. Autenticação e Autorização em APIs NodeJS: Autorização com Roles e Permissões

Na criação de APIs robustas e seguras em NodeJS, a autenticação e a autorização são aspectos críticos que garantem a segurança e a integridade dos dados. A autenticação é o processo de verificação da identidade do usuário, enquanto a autorização é o processo de verificação das permissões do usuário autenticado. Neste capítulo, vamos nos concentrar na autorização com roles e permissões.

Entendendo Roles e Permissões

Em uma aplicação, diferentes usuários podem ter diferentes níveis de acesso. Por exemplo, em um sistema de gerenciamento de projetos, um usuário pode ser um 'Administrador', 'Gerente' ou 'Colaborador'. Cada um desses roles pode ter diferentes permissões. Um 'Administrador' pode ter permissão para criar, ler, atualizar e excluir qualquer projeto, enquanto um 'Gerente' pode apenas criar, ler e atualizar projetos, mas não excluí-los. Um 'Colaborador' pode apenas ler projetos. Esses são os roles e permissões.

Implementando Autorização com Roles e Permissões em NodeJS

Para implementar a autorização com roles e permissões em NodeJS, precisamos primeiro criar um modelo de usuário que inclua o role do usuário. Em seguida, precisamos criar uma função middleware que verifique o role do usuário e conceda ou negue acesso com base nesse role.

1. Criando o Modelo de Usuário

Podemos usar o Mongoose, um ODM (Object Data Modeling) popular para MongoDB, para criar nosso modelo de usuário. Aqui está um exemplo de como o modelo de usuário pode parecer:


const mongoose = require('mongoose');

const UserSchema = new mongoose.Schema({
  name: String,
  email: String,
  password: String,
  role: {
    type: String,
    enum: ['Admin', 'Manager', 'Contributor'],
    default: 'Contributor'
  }
});

module.exports = mongoose.model('User', UserSchema);

2. Criando a Função Middleware

Em seguida, precisamos criar uma função middleware que verifique o role do usuário. Podemos fazer isso usando o JWT (JSON Web Token), um padrão de token de acesso que permite a autenticação entre duas partes. Quando um usuário se autentica, um token JWT é gerado e enviado ao usuário. Esse token contém informações sobre o usuário, incluindo seu role. Aqui está um exemplo de como a função middleware pode parecer:


const jwt = require('jsonwebtoken');

function authRole(role) {
  return (req, res, next) => {
    const token = req.header('auth-token');
    if (!token) return res.status(401).send('Access Denied');

    try {
      const verified = jwt.verify(token, process.env.TOKEN_SECRET);
      if (verified.role !== role) return res.status(403).send('Forbidden');
      req.user = verified;
      next();
    } catch (err) {
      res.status(400).send('Invalid Token');
    }
  };
}

module.exports = authRole;

Com essa função middleware, podemos proteger nossas rotas com base no role do usuário. Por exemplo, podemos proteger a rota de exclusão de projeto para que apenas os usuários 'Admin' possam acessá-la:


const express = require('express');
const router = express.Router();
const authRole = require('../middleware/authRole');

router.delete('/project/:id', authRole('Admin'), (req, res) => {
  // Delete project
});

Em resumo, a autorização com roles e permissões é uma parte essencial da criação de APIs seguras em NodeJS. Ela permite que você controle o acesso a diferentes partes de sua aplicação com base no role do usuário. Implementar isso corretamente pode ajudar a prevenir o acesso não autorizado e a proteger os dados de sua aplicação.

Now answer the exercise about the content:

Qual é o papel da autorização com roles e permissões na criação de APIs seguras em NodeJS?

You are right! Congratulations, now go to the next page

You missed! Try again.

Next page of the Free Ebook:

10117.3. Autenticação e autorização em API's NodeJS: Implementação de login com redes sociais

Earn your Certificate for this Course for Free! by downloading the Cursa app and reading the ebook there. Available on Google Play or App Store!

Get it on Google Play Get it on App Store

+ 6.5 million
students

Free and Valid
Certificate with QR Code

48 thousand free
exercises

4.8/5 rating in
app stores

Free courses in
video, audio and text