From 2a290b5f86b8fa74a2484c792d51c51d4d7de95e Mon Sep 17 00:00:00 2001 From: Meik Date: Fri, 8 May 2026 23:19:54 +0200 Subject: [PATCH] Sanitize AD unsafe NTFS group name characters --- LiamNtfs/C4IT_IAM_SET/Helper.cs | 3 ++- ...NTFS_AdditionalConfiguration_BlackWhitelist_Konzept.md | 8 +++++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/LiamNtfs/C4IT_IAM_SET/Helper.cs b/LiamNtfs/C4IT_IAM_SET/Helper.cs index 329282d..d488cf4 100644 --- a/LiamNtfs/C4IT_IAM_SET/Helper.cs +++ b/LiamNtfs/C4IT_IAM_SET/Helper.cs @@ -15,6 +15,7 @@ namespace C4IT_IAM_Engine public const int MaxAdGroupDescriptionLength = 1024; public const int MaxAdGroupLoopDigits = 3; public const string DefaultGroupNameSanitizeReplacement = "_"; + private const string AdUnsafeGroupNameCharactersPattern = @"[\x00-\x1F\s\-\/\\\[\]:;\|=,\+\*\?<>\@()'""]"; private const int MinLeadingRelativePathSegmentLength = 3; private const int MinSingleLeadingRelativePathSegmentLength = 2; private const int MinLastRelativePathSegmentLength = 12; @@ -211,7 +212,7 @@ namespace C4IT_IAM_Engine return string.Empty; var replacement = NormalizeGroupNameSanitizeReplacement(groupNameSanitizeReplacement); - return Regex.Replace(segment, @"[\s\-]", match => replacement); + return Regex.Replace(segment, AdUnsafeGroupNameCharactersPattern, match => replacement); } public static string NormalizeGroupNameSanitizeReplacement(string replacement) diff --git a/Sonstiges/LIAM_NTFS_AdditionalConfiguration_BlackWhitelist_Konzept.md b/Sonstiges/LIAM_NTFS_AdditionalConfiguration_BlackWhitelist_Konzept.md index eb1e248..f7de10a 100644 --- a/Sonstiges/LIAM_NTFS_AdditionalConfiguration_BlackWhitelist_Konzept.md +++ b/Sonstiges/LIAM_NTFS_AdditionalConfiguration_BlackWhitelist_Konzept.md @@ -237,9 +237,11 @@ Die Normalisierung der dynamischen Pfadbestandteile wird ueber `AdditionalConfig `NtfsGroupNameSanitizeReplacement` steuert das Ersatz-/Trennzeichen fuer dynamische Pfadbestandteile: -- nicht gesetzt: bisheriges Verhalten, Leerzeichen und Bindestriche werden durch `_` ersetzt und Pfadsegmente werden mit `_` verbunden -- gesetzt auf z.B. `.`: Leerzeichen und Bindestriche werden durch `.` ersetzt und Pfadsegmente werden mit `.` verbunden -- gesetzt auf einen leeren Wert, ``, `empty`, `none` oder `remove`: Leerzeichen/Bindestriche werden entfernt und Pfadsegmente ohne Trennzeichen verbunden +- nicht gesetzt: AD-kritische Zeichen werden durch `_` ersetzt und Pfadsegmente werden mit `_` verbunden +- gesetzt auf z.B. `.`: AD-kritische Zeichen werden durch `.` ersetzt und Pfadsegmente werden mit `.` verbunden +- gesetzt auf einen leeren Wert, ``, `empty`, `none` oder `remove`: AD-kritische Zeichen werden entfernt und Pfadsegmente ohne Trennzeichen verbunden + +Als AD-kritisch gelten in dynamischen Pfadbestandteilen derzeit Whitespace, Bindestrich, Steuerzeichen sowie `/ \ [ ] : ; | = , + * ? < > @ ( ) ' "`. Diese Zeichen sind fuer AD-`sAMAccountName`, LDAP-DNs/Search-Filter oder Entra-/Graph-kompatible Gruppennamen problematisch. `.` und `_` bleiben erhalten. Die Einstellung wirkt auf `{{NAME}}`, `{{RELATIVEPATH}}`, `{{ROOT_*}}`, `{{TRAVERSE_NAME}}` und `{{TRAVERSE_VISIBLEPATH}}`. Sie aendert nicht die statischen Zeichen, die direkt im Naming Template stehen. Soll z.B. zwischen Root und Ordner immer ein Punkt stehen, bleibt der Punkt Bestandteil des Templates.