Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/gnobroga/user-jwt-authentication
É um projeto simples que eu fiz envolvendo autenticação via JWT, com refresh token, docker e muito mais.
https://github.com/gnobroga/user-jwt-authentication
Last synced: 29 days ago
JSON representation
É um projeto simples que eu fiz envolvendo autenticação via JWT, com refresh token, docker e muito mais.
- Host: GitHub
- URL: https://github.com/gnobroga/user-jwt-authentication
- Owner: GNobroga
- Created: 2024-03-10T23:02:57.000Z (11 months ago)
- Default Branch: master
- Last Pushed: 2024-03-11T11:08:47.000Z (11 months ago)
- Last Synced: 2024-04-09T15:11:53.466Z (10 months ago)
- Language: Java
- Homepage:
- Size: 107 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# user-shield
É um simples projeto que envolve autenticação via JWT, utilizando filtros e as classes fornecidas pelo Java. Apesar de ser simples, empreguei diversos conceitos interessantes neste projeto, tais como Specification, Example, Criteria, entre outros.
## Para executar no docker
Clone o projeto e navegue até o diretório correspondente.
Utilize o seguinte comando para executar o projeto com o Docker Compose:```bash
docker-compose up -d
```Caso prefira não utilizar o Docker Compose, construa a imagem com o seguinte comando:
```bash
docker image build -t minha-tag-aqui:0.1 -f Dockerfile .
```Após a construção da imagem, crie e execute um container com base na imagem criada:
```bash
docker container run --name meucontainer -dt -p 8080:8080 minha-tag-aqui:0.1
```Certifique-se de substituir "minha-tag-aqui" pelo nome desejado para a imagem e ajuste as opções conforme necessário. Este comando cria e executa um container em segundo plano, atribuindo um terminal exclusivo e fazendo o mapeamento das portas do host com as portas expostas pelo container.
## Endpoints
Account tem suporte aos verbos **GET**, **DELETE**, **PUT**, **POST**. Os endpoints:
**/account** - Permite utilizar o POST sem autenticação.
**/auth/token** - Permite utilizar o POST sem autenticação.
**/h2-console** - Permissão total.Para utilizar o verbo **GET**, o usuário autenticado precisa ter a role **COMMON**. E **ADMIN** para qualquer outra rota que exija autenticação.
#### /account (GET)
```json
{
"result": [
{
"id": "5aee3478-0ab1-4de0-9b59-07702aa36918",
"name": "Gabriel Cardoso",
"email": "[email protected]",
"username": "kamelouti",
"roles": [
"COMMON"
]
}
],
"totalElements": 1,
"totalPages": 10,
"currentPage": 0
}
```#### /account (POST)
Payload
```json
{
"email": "[email protected]",
"name": "Gabriel Cardoso",
"username": "kamelouti",
"password": "kamelouti"
}
```Resposta
```json
{
"result": {
"id": "ba2f5a45-f64f-4abe-b065-0eb066bf14e0",
"name": "Gabriel Cardoso",
"email": "[email protected]",
"username": "kamelouti",
"roles": [
"COMMON"
]
}
}
```### /auth/token
Payload
```json
{
"username": "kamelouti",
"password": "kamelouti"
}
```Resposta
```json
{
"tokenType": "Bearer",
"accessToken": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJhdXRoIiwiZXhwIjoxNzEwMTE0ODE2LCJzdWIiOiJrYW1lbG91dGkiLCJyb2xlcyI6IkNPTU1PTiJ9.FJRFUsRVMhn4RJQ0wN8ntpUHV8z0EIf8T2qJsENJNqlu3c8Onval5l8nsFEz9sgC5MOPHQpzef0CFBVOG0dvIi1MbKrwxH9poTA4jKDVXzPeHgoYk0y7HA1oe3J6ycdBa5NaB4XGTHS4Nj0tyGimrJXdT9AX28NlmhFnFHRObgq6EwejY3gaIB8vmDK6TvDceEPa1XyAy_D8QSK5BLQq0Ljio0p_PTruhw_WDhcXlkx_Gz9YqBcLbiJt6cWtMbzvRGZw2Dz63VO6_bEDll5YC3IEGF2La-P3h8i2MMMwy3ENTmYjPqAodSt-78PGyISl8vf9d5EM9-SanVLpX_J-mA",
"refreshToken": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJhdXRoIiwiZXhwIjoxNzEwMTI1NjE2LCJzdWIiOiJrYW1lbG91dGkiLCJyb2xlcyI6IkNPTU1PTiIsInJlZnJlc2hUb2tlbiI6dHJ1ZX0.fk17CU8cUniP_qwJBqWKbUEB3KKApIxYDmGK4PXtoprAuL-bZPQpyleUiTQDvN11WirRjLnoxS3zY0tsyV3jILbdNi_F6xO-rMWTDvxKim9uFFyhq-AFTlPGf68mTml8_QRaDaeQKRHjm4jFibfmxW1EOpbn23bmusXNHCtEaAk8zHbm0F-F9F1lHvosXKVzCa0Uc5mToUzExE_G0l-jRzLlyKBBikGHz4glhtwKhzwKagMJ3sZaqPKpLxNy3VqBBHDvh708wohZgxz5X9j-1qSh1T_XYgP1Vr-z9fAzHi7UJOpHTE1bfLwoTMwwL_SqNJkGRKMaj4n-UYJXwGIt3g"
}```
#### /auth/refresh-token
```json
{
"refreshToken": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJhdXRoIiwiZXhwIjoxNzEwMTE0ODE2LCJzdWIiOiJrYW1lbG91dGkiLCJyb2xlcyI6IkNPTU1PTiJ9.FJRFUsRVMhn4RJQ0wN8ntpUHV8z0EIf8T2qJsENJNqlu3c8Onval5l8nsFEz9sgC5MOPHQpzef0CFBVOG0dvIi1MbKrwxH9poTA4jKDVXzPeHgoYk0y7HA1oe3J6ycdBa5NaB4XGTHS4Nj0tyGimrJXdT9AX28NlmhFnFHRObgq6EwejY3gaIB8vmDK6TvDceEPa1XyAy_D8QSK5BLQq0Ljio0p_PTruhw_WDhcXlkx_Gz9YqBcLbiJt6cWtMbzvRGZw2Dz63VO6_bEDll5YC3IEGF2La-P3h8i2MMMwy3ENTmYjPqAodSt-78PGyISl8vf9d5EM9-SanVLpX_J-mA"}
```Retorno
```json
{
"tokenType": "Bearer",
"accessToken": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJhdXRoIiwiZXhwIjoxNzEwMTE1MDk3LCJzdWIiOiJrYW1lbG91dGkiLCJyb2xlcyI6IkNPTU1PTiJ9.PClUc7cxojCXzGYFwfMyah486ecGTsTaERQY35cg29JrsQr_RvBmVmkKGHTbH5KMrbR0-S39B9fWU3drDIUVDW8B62TbmlLqFql67fIvqAWUhTzZzymrxTMmUNRm-VmDOYmrhctMLy_FO0j18gvu5_G0GdB5ysYIO8dEPfa2Rrz57yul-BTBlSKLQbf9dYdHbQcso1TlexNnXEVbgY47WcCuWRyF-NkCzQxX4PSCrzIvzsz-TXfOneDOEADk1ikN1G0zk3ARFMB-hjxV_HHZx1SKLA7q02r16DjZvZOQVR8AF-P_XE2pDMh7-0Zase7uK9RZK8ybHIk0CvSwlc2idg",
"refreshToken": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJhdXRoIiwiZXhwIjoxNzEwMTIyMjk3LCJzdWIiOiJrYW1lbG91dGkiLCJyb2xlcyI6IkNPTU1PTiIsInJlZnJlc2hUb2tlbiI6dHJ1ZX0.SvnXw9HnnVD2VzR1ItUpGRPkrhSKRJGliZKj_aXeuWN-2vxD9yZBWAz8_jHpVeqknlT5XPQlb11yVVgv1AF78eJchvpw_gcQi6E5xPAlZTNZ1lygLt7qbJxwtNG7wtxFYxU2ibhSOk2KBJCgMazUi8ogPlLEvXAY8qqnpkZIzq_cA6siAAE9nRIQmmaW1Bfp3n2xFNp2RdJQb9K4Mq9PkqAl8KUvyDiohzwku6AEgTt5lSEfmjTRe9xkPeJ0EY1eTHJYdYaRA423DtxPXAcyyv1tYJvwrVbSEA3CPJhUy2p23AiQ6pzKJCS5_JOnwNG0G1xT_9bNL05Fj-4h4qQ8oA"
}
```### Tecnologias
#### Auth0/java-jwt
#### ModelMapper
#### Spring Data JPA
#### CriteriaAPI
#### H2
##### Feito por amor por mim <3