Vous êtes sur la page 1sur 22

http://www.luiztools.com.

br

Node.js e
MongoDB
CRONOGRAMA
JSON Web Token
Autenticação
Autorização
JSON Web
Token
JSON Web Token

Introdução

JWT, resumidamente, é uma string de caracteres


codificados que, caso cliente e servidor estejam sob
HTTPS, permite que somente o servidor que conhece
o 'segredo' possa ler o conteúdo do token e assim
confirmar a autenticidade do cliente.
JSOn Web Token
Autenticação
Autenticação

Estrutura

npm install jsonwebtoken dotenv-safe


Autenticação

dotenv-safe

# .env.example, commit to repo


SECRET=

#.env, don't commit to repo


SECRET=mysecret
Autenticação

api-gateway

require("dotenv-safe").load();
var jwt = require('jsonwebtoken');
Autenticação

api-gateway
app.post('/login', (req, res, next) => {
if(req.body.user === 'luiz' && req.body.pwd === '123'){
//auth ok
const id = 1; //esse id viria do banco de dados
var token = jwt.sign({ id }, process.env.SECRET, {
expiresIn: 300 // expires in 5min
});

res.status(200).send({ auth: true, token: token });


}

res.status(500).send('Login inválido!');
})
Autenticação

api-gateway
app.get('/logout', function(req, res) {
res.status(200).send({ auth: false, token: null });
});
Autorização
Autorização

api-gateway
function verifyJWT(req, res, next){
var token = req.headers['x-access-token'];
if (!token)
return res.status(401).send({ auth: false, message:
'No token provided.' });

jwt.verify(token, process.env.SECRET, function(err, decoded) {


if (err) return res.status(500).send({ auth: false,
message: 'Failed to authenticate token.' });

req.userId = decoded.id;
next();
});
}
Autorização

api-gateway
// Proxy request
app.get('/users', verifyJWT, (req, res, next) => {
userServiceProxy(req, res, next);
})

app.get('/products', verifyJWT, (req, res, next) => {


productsServiceProxy(req, res, next);
})
Autorização
Autorização
Autorização
Autorização
Dúvidas?
Exercícios
1 Crie um login que funcione de verdade

2 Crie perfis de autorização para maior segurança

3 Controle número de requisições na API GW


Obrigado!

Vous aimerez peut-être aussi