# Day 26 Exit Ticket - Authentication
### Daily Objectives
* Explain the motivation for token-based authentication.
* Describe the various parts of a JSON web token.
* Implement JWT authentication in a full stack application using the jsonwebtoken library.
* Explain the motivation for encrypting passwords.
* Use the bcrypt library to encrypt passwords before you store them in your database.
### Key Topics
* JSON web tokens
* Using localStorage on the frontend to store token
* Passing the token as an authorization header with HTTP requests
* Creating tokens using `jsonwebtoken`
* Verifying tokens using `jsonwebtoken`
* Identifying the three parts of a JWT
* Password encryption
* Using `bcrypt` to hash passwords
* Using `bcrypt` to compare plain passwords to hashed passwords
* Environment variables
* For securely storing the secret needed for `jsonwebtoken`
### Pre-reading
* [Getting Started with JSON Web Tokens](https://auth0.com/learn/json-web-tokens/)
### Lessons
<hr>
#### 01 - JSON Web Tokens
#### Objectives
* Explain the motivation for token-based authentication.
* Describe the various parts of a JSON web token.
* Implement JWT authentication in a full stack application using the jsonwebtoken library.
#### Assets
| | Assets | Time |
| ------------- |:---------------------: | -----:|
| **KEYNOTE** | [JWT](https://docs.google.com/presentation/d/19BCz0klICG7ztLeepExQxunWzD4B33PNA3iFLoQkCqM/edit?usp=sharing) | |
| **LECTURE** | [Sample Lecture](https://youtu.be/08LCVCp_XNc) | 25 mins |
| **DEMO** | [Sample Demo](https://youtu.be/-wycu-eLTtg) | 60 mins |
<hr>
#### 02 - bcrypt
#### Objectives
* Explain the motivation for encrypting passwords
* Use the bcrypt library to encrypt passwords before you store them in your database
#### Assets
| | Assets | Time |
| ------------- |:---------------------: | -----:|
| **KEYNOTE** | [bcrypt](https://docs.google.com/presentation/d/1NWx0ASqOWVVqtmk8citCEPlBxzvzkcXe5S_anHYKc5o/edit?usp=sharing) | |
| **LECTURE** | [Sample Lecture](https://youtu.be/ewZXAfAyyfQ) | 10 mins |
| **DEMO** | [Sample Demo (same as above)](https://youtu.be/-wycu-eLTtg) | 60 mins |
| **LMS PAIR WORKSHOP** | [Pair Exercise: JWT Authentication and Password Hashing](https://learn.fullstackacademy.com/workshop/5fe2759804396f0004a82f41/landing)| 1.5 hrs |
| **WORKSHOP START** | N/A | |
| **WORKSHOP SOLUTION CODE** | [Solution](https://github.com/FullstackAcademy/PairExercise.JWTAuthWithPasswordHashing.Solution) | |
| **WORKSHOP SOLUTION VIDEO** | None | |
<hr>
### Exit Ticket
| Exit Ticket Template | Solution |
| -------------------- |:-------: |
| [Form Link](https://docs.google.com/forms/d/1oWbbL99SFkYAyrQxjDNX8kdLoS2x4QvutLxxTR0-gHo/edit)| - |
### Additional Resources
None
### Notes
None