From d07013a46c7d1f62903639af4f5bab582af75161 Mon Sep 17 00:00:00 2001 From: Christoph Heiss Date: Fri, 12 Jan 2024 17:16:03 +0100 Subject: [PATCH] config: domains: add new "ad" section type for AD realms Signed-off-by: Christoph Heiss Reviewed-by: Lukas Wagner Tested-by: Lukas Wagner --- pbs-config/src/domains.rs | 7 ++++++- src/auth.rs | 2 ++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/pbs-config/src/domains.rs b/pbs-config/src/domains.rs index 35aa11d5..dcf47f83 100644 --- a/pbs-config/src/domains.rs +++ b/pbs-config/src/domains.rs @@ -8,13 +8,14 @@ use proxmox_schema::{ApiType, ObjectSchema}; use proxmox_section_config::{SectionConfig, SectionConfigData, SectionConfigPlugin}; use crate::{open_backup_lockfile, replace_backup_config, BackupLockGuard}; -use pbs_api_types::{LdapRealmConfig, OpenIdRealmConfig, REALM_ID_SCHEMA}; +use pbs_api_types::{AdRealmConfig, LdapRealmConfig, OpenIdRealmConfig, REALM_ID_SCHEMA}; lazy_static! { pub static ref CONFIG: SectionConfig = init(); } fn init() -> SectionConfig { + const AD_SCHEMA: &ObjectSchema = AdRealmConfig::API_SCHEMA.unwrap_object_schema(); const LDAP_SCHEMA: &ObjectSchema = LdapRealmConfig::API_SCHEMA.unwrap_object_schema(); const OPENID_SCHEMA: &ObjectSchema = OpenIdRealmConfig::API_SCHEMA.unwrap_object_schema(); @@ -33,6 +34,10 @@ fn init() -> SectionConfig { config.register_plugin(plugin); + let plugin = SectionConfigPlugin::new("ad".to_string(), Some(String::from("realm")), AD_SCHEMA); + + config.register_plugin(plugin); + config } diff --git a/src/auth.rs b/src/auth.rs index 745252ec..ba81e848 100644 --- a/src/auth.rs +++ b/src/auth.rs @@ -310,6 +310,8 @@ pub(crate) fn lookup_authenticator( let (domains, _digest) = pbs_config::domains::config()?; if let Ok(config) = domains.lookup::("ldap", realm) { Ok(Box::new(LdapAuthenticator { config })) + } else if let Ok(config) = domains.lookup::("ad", realm) { + Ok(Box::new(AdAuthenticator { config })) } else if domains.lookup::("openid", realm).is_ok() { Ok(Box::new(OpenIdAuthenticator())) } else {