mellon 0.1.0

Library for adding contemporary authentication to rust-based websites.
Documentation
//! Mellon - Authentication addon library for REST web services
//!
//! Modern web authentication is more complex than only username and password.
//! This opiniated library provides convenient routes for authentication with username plus any of the following:
//!
//! * Password
//! * [TOTP](https://en.wikipedia.org/wiki/Time-based_one-time_password): Time-based passwords
//! * [WebAuthn](https://en.wikipedia.org/wiki/WebAuthn): Login with security keys like YubiKeys (non-resident keys only)
//!
//! The choice of dependencies has been influenced by this article from 2020: https://blog.logrocket.com/9-rust-authentication-libraries-that-are-ready-for-production/
//!
//! The library assumes that each user identifies themselves with a [identifier::SaneName].
//! Each user also has a persistent [uuid::Uuid] that is stored by the library,
//! so that the user can change their login name.
//! Authenticated REST requests should use the [Authenticated HTTP Header](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Authorization)
//! with a value of `Bearer: JWT` where `JWT` is a [JSON web token](https://jwt.io/) encoded in [base64](https://en.wikipedia.org/wiki/Base64).
//! The JSON web token can be generated with this library.
//!
//! This library is intented to be used with different Rust web frameworks.
//! Currently, only `poem-openapi` is supported. See the `examples` folder for details.
//!
//! This crate is still work in progress and this is an alpha open source release.
//! Most of the functionality is already there, but there is still room for more improvements.

mod data;
pub mod framework;
pub mod io;
pub mod rest;

pub use data::auth_data::AuthData;
pub use data::challenge::Challenge;
pub use data::sane_name::SaneName;
pub use io::file::username_from_id;