Skip to content

13_restsecurity

Douglas Fernandes edited this page Jan 27, 2020 · 1 revision

Segurança em um API REST

A proposta é a configuração e criação de um API REST, com a possibilidade de cadastro de usuário.

Não será abordado a autenticação através que cookie, para um exemplo siga este tutorial.

Começamos este passo na branch topicos/t6/p1.

Passo a Passo 1

Vamos começar pela estrutura de cadastro de usuários, criandos os modelos, o repositório e o serviço.

  1. Dentro da package com.example.demo.model.entities, criem uma nova classe User. Arquivo final.
  2. Dentro da package com.example.demo.model.request, criem uma nova classe UserCreateRequest. Arquivo final.
  3. Criar a package: com.example.demo.model.security.
  4. Dentro da package criada, crie uma nova classe CustomLoginUser. Arquivo final.
  5. Dentro da package com.example.demo.repository, criem uma nova classe UserRepository. Arquivo final.
  6. Dentro da package com.example.demo.service, criem uma nova classe UserService. Arquivo final.

Branch final topicos/t7/p1. Para ver as alterações completas DIFF das alterações

Passo a Passo 2

Neste ponto, caso tentem acessar a aplicação ela irá exibir a tela de login padrão do spring boot. Vamos então configurar a autenticação da aplicação para exibir uma tela de cadastro de usuários, e permitir o acesso ao swagger sem autenticação.

  1. Criar a package: com.example.demo.security.config.
  2. Dentro da package criada, crie uma nova classe WebSecurityConfig. Arquivo final.
  3. Dentro da package com.example.demo.controller, crie uma nova classe UserController. Arquivo final.
  4. Dentro da pasta de templates, crie o arquivo userAdd.html Arquivo final.
  5. Atualize o controller ClientController, para não utilizar a rota principal (/). Arquivo final.
  6. Atualize o modelo UserCreateRequest, para ajustar a mensagem de erro. Arquivo final.

Branch final topicos/t7/p2. Para ver as alterações completas DIFF das alterações

Passo a Passo 3

Agora vamos configurar a estrutura de autenticação, usando um autenticador próprio.

  1. Dentro da package com.example.demo.model.request, crie uma nova classe LoginRequest. Arquivo final.
  2. Criar a package: com.example.demo.security.service.
  3. Dentro da package com.example.demo.security.service, crie uma nova classe AuthProviderService. Arquivo final.
  4. Dentro da package com.example.demo.security.service, crie uma nova classe TokenAuthenticationService. Arquivo final.
  5. Criar a package: com.example.demo.security.filters.
  6. Dentro da package com.example.demo.security.filters, crie uma nova classe JWTAuthenticationFilter. Arquivo final.
  7. Dentro da package com.example.demo.security.filters, crie uma nova classe JWTLoginFilter. Arquivo final.
  8. Atualizar o arquivo WebSecurityConfig. Arquivo final.

Branch final topicos/t7/p3. Para ver as alterações completas DIFF das alterações

Siga para o próximo tópico: Validação em REST

Clone this wiki locally