Build Jwt Authenticated Restful Apis With Golang

Golang: Intro to JWT Auth with Golang (Go programming language)

Last updated 2022-01-10 | 4.1

- Build a user registration and login backend with Golang
- Understand JSON Web Tokens (Header
- Payload
- Signature)
- Create RESTful APIs (user signup
- login and a protected endpoint)

What you'll learn

Build a user registration and login backend with Golang
Understand JSON Web Tokens (Header
Payload
Signature)
Create RESTful APIs (user signup
login and a protected endpoint)
Authenticate users with email
password and a JWT
Secure RESTful endpoints with JWTs
Examine the internals of a JWT
Sign and validate a JWT
Create a Postgres database instance and a users table and insert records into the table
Examine the definitions of different Golang package methods

* Requirements

* Familiar with the basics of Golang and RESTful APIs
* Any text editor (preferably visual studio code with golang plugins such as go-to definition)

Description

Build Golang (Go programming language) REST API authentication with JWTs is a simple introductory guide to creating secure Golang APIs with JSON Web Tokens (JWTs).

You will:

- learn the theory behind JSON WEB TOKENs (JWTs) and how they are constructed and used,

- build a Golang (Go programming language) signup handler function that takes the user’s credentials such as email and password and saves them on a PostgreSQL database table,

- implement a Golang (Go programming language) utility that generates password hashes with the ‘bcrypt’ package to avoid storing plain text passwords on the database

- build a Golang (Go programming language) login handler function that takes user credentials and verifies the user based on their supplied credentials

- implement a Token generator utility that takes the user’s credentials, and together with developer specified secret and claims, generates a JSON Web Token (JWT),

- create a Golang (Go programming language) middleware function that validates a JWT token upon request to restricted routes

Also, Throughout the process you will learn several Golang (Go programming language) and REST API authentication concepts.

Aside from Golang (Go programming language), some of the major technologies you will use are:

  • PostgreSQL database to create a database instance and a users table where your records will be stored in,

  • jwt-gopackage for generating the JSON Web Token and its validation,

  • gorilla/muxpackage for creating the router that your endpoints and handler functions will be registered on,

  • pqpackage for parsing your database instance’s URL,

  • database/sqlpackage for establishing and maintaining connection with your database instance,

  • bcrypt’ package for generating and comparing your password hashes,

  • Postman application for testing your APIs with several HTTP requests


Who this course is for:

  • Anyone interested in creating JWT authenticated RESTful APIs with Golang

Course content

3 sections • 26 lectures

Intro Preview 02:43

Package Installations Preview 02:50

Postman Preview 00:53

Golang installation instructions Preview 02:41

Join the student Group Preview 00:14

Some theory on JWTs Preview 04:48

Create the main function Preview 06:10

Start server Preview 06:20

Test handler functions Preview 05:30

Create the Models Preview 02:42

Create Database Instance and Users table Preview 06:23

Connect to database Preview 04:52

Implement signup handler - part 1 Preview 13:56

Implement signup handler - part 2 Preview 08:57

Implement the GenerateToken function Preview 06:51

Implement Login Handler function - part 1 Preview 07:23

Implement Login Handler function - part 2 Preview 06:35

Implement TokenVerifyMiddleware Preview 15:17

Source Code Preview 00:02

Create new packages and move environment variables Preview 09:30

Refactor models Preview 10:11

Refactor utils Preview 02:00

Refactor Controllers Preview 13:35

Refactor Repository Preview 07:07

Refactored source code Preview 00:05