https://github.com/nmrshll/auth-rs
A minimal authentication / authorization server using rust, Hyper, Postgres, and async/await
https://github.com/nmrshll/auth-rs
async async-await auth authentication authentication-server authorization authorization-middleware authorization-server await hyper middleware performance postgres rust server users
Last synced: about 2 months ago
JSON representation
A minimal authentication / authorization server using rust, Hyper, Postgres, and async/await
- Host: GitHub
- URL: https://github.com/nmrshll/auth-rs
- Owner: nmrshll
- Created: 2019-11-24T10:52:45.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2020-03-18T12:02:57.000Z (over 6 years ago)
- Last Synced: 2025-03-30T06:36:22.959Z (about 1 year ago)
- Topics: async, async-await, auth, authentication, authentication-server, authorization, authorization-middleware, authorization-server, await, hyper, middleware, performance, postgres, rust, server, users
- Language: Rust
- Size: 50.8 KB
- Stars: 3
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Auth-rs
A minimal authentication / authorization server using Rust, Hyper, Postgres, and async/await .
I didn't easily find any ready-made examples that do just that, so here's one.
## Features
- **Register users with email/password**
- **Get an exsisting user / Check if an email is already taken**
- **Login / Logout with email/password**
- **Access / modify protected resources**: one example included: creating posts that belong to a user
and also:
- **Great performance and minimal footprint** thanks to Rust, Hyper, tokio and async/await syntax
- **Users database** using Postgres
### Limitations
- As of now, this example is usable for writing API routes in Rust (i.e. starting from this code and extending). Usage with an other stack might be possible but wasn't yet taken into consideration for this project.
## Usage
### Prerequisites
- **Docker** daemon running
- **Rust 1.38+**
### Starting the server
Run `make`
## Testing
Test requests are included in the makefile (using `curl`)
- **Register a user** using `make users/register`
- **Check if an email is already taken** using `make users/check`
- **Login** using `make users/login`
- **Access a dummy protected route** using `make protected`
- **Create a post belonging to a user** using `make posts/create`
## TODO and contributing
Don't hesitate to file a bug, request a feature, or simply comment using issues.
If you want to help here's a few useful tasks I have in mind for this project:
- [ ] Email verification and email invitations
- [ ] CI
- [ ] example deployment instructions
- [ ] Write a tutorial to re-create this repo from scratch