From 2b64fc57bbed04dd8249afcbbc6ac6849e05ba36 Mon Sep 17 00:00:00 2001 From: metamuffin Date: Thu, 30 May 2024 02:18:27 +0200 Subject: implment creds for http basic auth --- src/modules/auth/basic.rs | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'src/modules/auth/basic.rs') diff --git a/src/modules/auth/basic.rs b/src/modules/auth/basic.rs index 08870c4..9af5b01 100644 --- a/src/modules/auth/basic.rs +++ b/src/modules/auth/basic.rs @@ -13,7 +13,9 @@ use hyper::{ use log::debug; use serde::Deserialize; use serde_yaml::Value; -use std::{collections::HashSet, pin::Pin, sync::Arc}; +use std::{pin::Pin, sync::Arc}; + +use super::Credentials; pub struct HttpBasicAuthKind; impl NodeKind for HttpBasicAuthKind { @@ -28,7 +30,7 @@ impl NodeKind for HttpBasicAuthKind { #[derive(Deserialize)] pub struct HttpBasicAuth { realm: String, - valid: HashSet, + users: Credentials, next: DynNode, } @@ -46,7 +48,8 @@ impl Node for HttpBasicAuth { .ok_or(ServiceError::BadAuth)?; let k = base64::engine::general_purpose::STANDARD.decode(k)?; let k = String::from_utf8(k)?; - if self.valid.contains(&k) { + let (username, password) = k.split_once(":").ok_or(ServiceError::BadAuth)?; + if self.users.authentificate(username, password) { debug!("valid auth"); return self.next.handle(context, request).await; } else { -- cgit v1.2.3-70-g09d2