2023-10-22 22:56:25 +02:00
|
|
|
# Nefarious Login
|
|
|
|
|
|
|
|
## Overview
|
|
|
|
|
|
|
|
`Nefarious Login` is a plug-and-play authentication module designed for
|
|
|
|
effortless integration into business applications. Part of a larger suite of
|
|
|
|
Nefarious tools, it aims to remove the hassle from implementing logins by using
|
|
|
|
various authentication engines like Zitadel.
|
|
|
|
|
|
|
|
## Quick Start
|
|
|
|
|
|
|
|
Install the crate via Cargo:
|
|
|
|
|
|
|
|
```bash
|
|
|
|
cargo install nefarious-login
|
|
|
|
```
|
|
|
|
|
|
|
|
## Code Sample
|
|
|
|
|
|
|
|
Integrate `Nefarious Login` into your application. The core setup is about
|
|
|
|
configuring the `AuthService` as shown below:
|
|
|
|
|
|
|
|
```rust
|
|
|
|
#[derive(Debug, Clone, Parser)]
|
|
|
|
struct Command {
|
|
|
|
#[clap(flatten)]
|
|
|
|
auth: AuthClap,
|
|
|
|
}
|
|
|
|
|
|
|
|
async fn main() -> anyhow::Result<()> {
|
|
|
|
let cmd = Command::parse_from(vec![
|
|
|
|
"base",
|
|
|
|
"--auth-engine=zitadel", // Can also use a yaml file, or env variables, see app --help for more info
|
|
|
|
"--zitadel-authority-url=https://personal-wxuujs.zitadel.cloud",
|
|
|
|
"--zitadel-redirect-url=http://localhost:3001/auth/authorized",
|
|
|
|
"--zitadel-client-id=<your-client-id>",
|
|
|
|
"--zitadel-client-secret=<your-secret>",
|
|
|
|
"--session-backend=postgresql",
|
|
|
|
"--session-postgres-conn=postgres://como:somenotverysecurepassword@localhost:5432/nefarious-test",
|
|
|
|
]);
|
|
|
|
|
|
|
|
let auth_service = AuthService::new(&cmd.auth).await?;
|
|
|
|
|
|
|
|
// .. Use in axum, raw apis etc. See examples for details
|
|
|
|
}
|
|
|
|
```
|
|
|
|
|
|
|
|
Complete code in the main function will be similar to the snippet you provided.
|
|
|
|
|
|
|
|
## Configuring with CLI
|
|
|
|
|
|
|
|
Use these CLI options to set up your authentication:
|
|
|
|
|
|
|
|
```bash
|
|
|
|
app
|
|
|
|
--auth-engine=zitadel
|
|
|
|
--zitadel-authority-url=https://example.zitadel.cloud
|
|
|
|
--zitadel-redirect-url=http://localhost:3001/auth/authorized
|
|
|
|
--zitadel-client-id=your-client-id
|
|
|
|
--zitadel-client-secret=your-client-secret
|
|
|
|
--session-backend=postgresql
|
|
|
|
--session-postgres-conn=postgres://username:password@localhost:5432/dbname
|
|
|
|
```
|
|
|
|
|
|
|
|
## Examples
|
|
|
|
|
2023-10-22 22:57:57 +02:00
|
|
|
All examples feature axum integration
|
|
|
|
|
2023-10-22 22:56:25 +02:00
|
|
|
- **Basic Setup**: Check out [examples/basic](./examples/basic) for a minimal
|
|
|
|
implementation.
|
|
|
|
- **Using with Clap**: For integrating with Clap, see
|
|
|
|
[examples/clap](./examples/clap).
|
|
|
|
|
|
|
|
## License
|
|
|
|
|
|
|
|
MIT License.
|
|
|
|
|
|
|
|
For more details, see [LICENSE](./LICENSE).
|
|
|
|
|
|
|
|
## Links
|
|
|
|
|
|
|
|
- Crate:
|
|
|
|
[nefarious-login on crates.io](https://crates.io/crates/nefarious-login)
|
|
|
|
|
|
|
|
## Contributions
|
|
|
|
|
|
|
|
PRs welcome. For major changes, open an issue first.
|