|
|
## Como para proteger uma rota (OAuth 2)
|
|
|
|
|
|
Caso você tenha desenvolvido uma nova rota que precise estar protegida pela autenticação OAuth 2 siga os seguintes passos:
|
|
|
|
|
|
|
|
|
|
|
|
### 1) Criar Usuario e Cliente (aplicação cliente)
|
|
|
|
|
|
Execute o script Mongo que está em **/model/inicializacaoMongo.js** -- isto criará o usuário "Administrador" com senha "123" e uma aplicação cliente com client_id="test_application_id" e secret="test_application_secret"
|
|
|
|
|
|
|
|
|
|
|
|
### 2) Proteger a rota
|
|
|
|
|
|
Basta utilizar o método **AuthManager.isAuthenticated** como segundo parâmetro do método de registro de rota do servidor Restify.
|
|
|
|
|
|
|
|
|
|
|
|
Abaixo, a rota POST ~/menores não protegida:
|
|
|
|
|
|
```javascript
|
|
|
server.post('/menores', (request, response, next) => {
|
|
|
const menorTranslator = new MenorTranslator()
|
|
|
menorTranslator.post(request, response)
|
|
|
})
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
E agora protegida (note o segundo parâmetro):
|
|
|
|
|
|
```javascript
|
|
|
server.post('/menores', AuthManager.isAuthenticated, (request, response, next) => {
|
|
|
const menorTranslator = new MenorTranslator()
|
|
|
menorTranslator.post(request, response)
|
|
|
})
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### 3) Requisitar o token no postman
|
|
|
|
|
|
Abra a requisição POST "/oauth/token" no Postman e informe:
|
|
|
|
|
|
|
|
|
|
|
|
* Na aba **Authorization** vão as informações da aplicação cliente:
|
|
|
* Username: _test_application_id_
|
|
|
* Password: _123_
|
|
|
|
|
|
|
|
|
|
|
|
* Na aba **Body** vão as informações do usuário:
|
|
|
* Selecione "x-www-form-urlencoded"
|
|
|
* grant_type: _password_
|
|
|
* username: _Administrador_
|
|
|
* password: _123_
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### 4) Testando a rota
|
|
|
|
|
|
* Basta fazer a requisição incluindo o token no cabeçalho da requisição. No Postman, no exemplo **POST ~/menores**, na aba "Headers" inclua o seguinte (a string destacada é o token obtido no passo 2):
|
|
|
|
|
|
* Authorization: Bearer **FfzutUS50zSzJiWnhosQK0QXkKldw9tSrMTQXxv4FKw7TNhXjtxmyCXxMHhxgbCKjsbcCPdEQKWTbM6bQnhdveOH85rNH9flJukd0jyzm5hZyA0pV9sNXPFHYKicQ59mZsA1PxLFXggBusOKV78O5crBsR6O5DXVdFR9lEu02S3ls1oxQOFcMprds9ZUyKETak1XIGJfGFvfPs2nJQ7oGG5wEsHof4pb21yPOZHg474NveisCkeW7STyB82ikUY3** |
|
|
\ No newline at end of file |