simple API illustrating basic and JSON Web Token (JWT) authentication
# arusha-coders-api
API to accompany the 'Securing your (RESTful) API' presentation
## Intro
This is a simple API that lets you create a user account and test view user info using basic or JSON Web Token (JWT) authentication.
## Usage
### Demo Server
#### cURL
create a user
```bash
# request
curl -d "name='First Last'" \
-d "email=user@email.com" \
-d "password=password" \
-d "confirmPassword=password" \
arusha-coders-api.herokuapp…
# response
{
"source": "signup",
"objects": {
"email": "user@email.com",
"jwt": "eyJ0eXAi...",
"exp": "DD/MM/YYYY"
}
}
```
get user info via Basic Authentication
```bash
# request
curl -H 'Content-Type: application/json' \
-u 'user@email.com:password' \
arusha-coders-api.herokuapp…
# response
{
"objects": {
"user": {
"_id": "554d...",
"password": "$2$10$...",
"lastName": "Last",
"firstName": "First",
"email": "user@email.com",
"__v": 0,
"isVerified": false
}
}
}
```
get user info via JWT Bearer Token Authentication
```bash
# request
curl -H 'Content-Type: application/json' \
-H 'Authorization: Bearer replace_with_your_jwt' \
arusha-coders-api.herokuapp…
# response
{
"objects": {
"user": {
"_id": "554d...",
"password": "$2$10$...",
"lastName": "Last",
"firstName": "First",
"email": "user@email.com",
"__v": 0,
"isVerified": false
}
}
}
```
create another JWT
```bash
# request
curl -X POST \
-H 'Content-Type: application/json' \
-u 'user@email.com:password' \
arusha-coders-api.herokuapp…
# response
{"objects": {"result": {"jwt": "eyJ0e...", "exp": "DD/MM/YYYY"}}}
```
#### Python
initialize
```python
# init requirements
import requests
# set api endpoint
base = '
arusha-coders-api.herokuapp…'
```
create a user
```python
# request
name, username, password = 'First Last', 'user@email.com', 'password'
data = {'name': name, 'email': username, 'password': password, 'confirmPassword': password}
r = requests.post(base + '/user', data=data)
# response
r.js …