Skip to content

Releases: eniocc/mobiseg

Implementando o logout

05 Dec 02:17
Compare
Choose a tag to compare

Com o JWT não temos o armazenamento do Token. Então como realizar o logout?
O access_token tem um tempo de vida menor, pois está sendo manipulado pelo javascript e mais susceptível a um possível ataque.
Por outro lado o refresh_token tem um tempo de vida maior e é "mais seguro" em relação ao refresh_token.
Nosso logout irá destruir o refresh_token no lado servidor.
A imagem em anexo mostra as configurações da requisição, via Postman para o logout.

Release de correção

05 Dec 02:00
Compare
Choose a tag to compare

Alguns models, 01 arquivo de migration e algumas alterações não foram comitadas. Segue correção.

Adicionando permissões de acesso

05 Dec 01:52
Compare
Choose a tag to compare

Agora apenas usuário autenticados podem fazer requisições, mesmo para a requisição da listagem de Categorias, antes liberada com "permitAll()"; Perceba que "permitAll()" ainda existe na classe ResourceServerConfig porém na classe CategoriaResource o método "listar()" está anotado com "@PreAuthorize("hasAuthoriry('ROLE_PESQUISAR_CATEGORIA')")", viabilizando a listagem apenas para usuários autenticados e com a permissão "ROLE_PESQUISAR_CATEGORIA".

Nesta implementação também podemos ter uma maior segurança quanto aos clientes das aplicaçãoes.
Na classe AuthorizationServerConfig perceba que temos 2 clientes: o cliente angular e o cliente mobile. Para o cliente angular temos 2 escopos: read e write; já para o cliente mobile temos apenas o scope read. Isso significa que mesmo um usuário com permissões avançadas, como o usuário ADMIN, poderá ter seu acesso restringindo de acordo com o cliente utilizado, lembre-se que cliente é diferente de usuário, isso foi comentado em sala de aula.
Na classe CategoriaResource logo acima dos métodos pode-se verificar a anotação @PreAuthorize, nesta anotação, além de passarmos a ROLE cadastrada no banco, podemos também especificar o scope a ser utilizado em cada método.
No Postman é só alterar o username e password (ver figura UserPasswordScopes.jpg) de acordo com os dados no AuthorizationServerConfig.

Movendo o usuário para o banco de dados

05 Dec 01:29
Compare
Choose a tag to compare

Atenção para a imagem com a nova forma de preencher o body da requisição. No body da requisição deverão ser passados os dados de usuário e senha de cada usuário cadastrado no banco de dados.
Admin tem senha admin. Maria tem senha maria. No script do banco a senha está criptografada. Dentro do pacote Util que se encontra dentro do pacote security existe a classe GeradorSenha, nela você pode executar como uma aplicação simples Java passando a senha que deseja encodar, no prompt irá aparecer a senha encodada.
Da forma que está a aplicação agora apenas usuários cadastrados no banco de dados, entretanto, as permissões ainda não estão sendo seguidas, ou seja, usuária MARIA tem as mesmas permissões que o usuário ADMIN, apesar de as permissões serem distintas, trataremos isto na próxima aula.

Criando filtro para CORS

05 Dec 00:38
Compare
Choose a tag to compare
v8.0

Criando filtro para CORS

O que é CORS?

05 Dec 00:29
Compare
Choose a tag to compare
v7.0

O que é CORS?

Movendo o refresh token do cookie para a requisição

05 Dec 00:07
Compare
Choose a tag to compare

Nesta etapa não há mais a necessidade de passar o refresh_token no header.

Movendo o Refresh Token para o Cookie

04 Dec 23:57
Compare
Choose a tag to compare
v5.0

Movendo o refresh token do cookie para a requisição

Renovando o access token com o refresh token

17 Nov 04:29
Compare
Choose a tag to compare

Agora a saída do novo access token fornece também o refresh_token

Configuranto JWT no projeto

17 Nov 04:11
Compare
Choose a tag to compare

Permanece a estrutura anterior do POSTMAN o token gerado é em formato distinto da versão anterior.
https://jwt.io para debug do token gerado.