An API to manage registration, login and authentication
Technology | Project | How to Run | License
This repository is an tutorial of how we can use JSON Web Token (JWT) and the Gin framework and in this way we can authenticate registered users. But what is a JWT?
The JSON Web Token is an internet open standard (RFC 7519) for creating optionally signed and/or encrypted data whose payload contains the JSON that asserts some claim numbers. Tokens are signed using a private secret or a public/private key. JWTs can be signed using a secret (with the HMAC algorithm) or a public/private key pair using RSA, or ECDSA.
While JWTs can be encrypted to also provide secrecy between parties, we will focus on signed tokens. Signed tokens can verify the integrity of the claims contained within it, while encrypted tokens hide those claims from other parties. When tokens are signed using public/private key pairs, the signature also certifies that only the party that owns the private key is the one who signed it.
The Project was develop as using the following techs:
As said before, this project is a simple one that only aims to demonstrate how users will be authenticated within our API. So it's a very simple project with endpoints. So for this project, we will need to create 2 public endpoints that will be used as authentication and 1 protected endpoint that will be protected by our JWT. So the in few lines we had
As educational project, and the purpose is use the concepts of CRUD, then we requirements of the our applications is to :
- Register a User
- Login
- Authentication
As can be seen above the list of requirements is , in summary, a simple CRUD.
User | Type |
---|---|
ID | int |
Username | string |
Password | string |
CreatedAt | datetime |
DeletedAt | datetime |
UpdateAt | datetime |
The API has the following end points:
Type | url | Functionality |
---|---|---|
get |
"/api/admin/user" | Authenticate the user to see the information |
post |
"/api/register" | Register a User |
post |
"/api/login" | Login |
To run the this project
- Clone the repo and access the directory;
- You also need to have a MySQL and create a database and table;
- The initial configurations can be encounter in
.env
, it is needed to use configure this instance;
- The initial configurations can be encounter in
- Init the instance in
localhost: 8000
withgo run main.go
; - If you have docker, you can use the following command:
docker compose --env-file .env up -d --build
The projects is under the MIT license. See the file LICENSE fore more details
Made with ♥ by Rafael 👋🏻