Sanitize AD unsafe NTFS group name characters
This commit is contained in:
@@ -15,6 +15,7 @@ namespace C4IT_IAM_Engine
|
|||||||
public const int MaxAdGroupDescriptionLength = 1024;
|
public const int MaxAdGroupDescriptionLength = 1024;
|
||||||
public const int MaxAdGroupLoopDigits = 3;
|
public const int MaxAdGroupLoopDigits = 3;
|
||||||
public const string DefaultGroupNameSanitizeReplacement = "_";
|
public const string DefaultGroupNameSanitizeReplacement = "_";
|
||||||
|
private const string AdUnsafeGroupNameCharactersPattern = @"[\x00-\x1F\s\-\/\\\[\]:;\|=,\+\*\?<>\@()'""]";
|
||||||
private const int MinLeadingRelativePathSegmentLength = 3;
|
private const int MinLeadingRelativePathSegmentLength = 3;
|
||||||
private const int MinSingleLeadingRelativePathSegmentLength = 2;
|
private const int MinSingleLeadingRelativePathSegmentLength = 2;
|
||||||
private const int MinLastRelativePathSegmentLength = 12;
|
private const int MinLastRelativePathSegmentLength = 12;
|
||||||
@@ -211,7 +212,7 @@ namespace C4IT_IAM_Engine
|
|||||||
return string.Empty;
|
return string.Empty;
|
||||||
|
|
||||||
var replacement = NormalizeGroupNameSanitizeReplacement(groupNameSanitizeReplacement);
|
var replacement = NormalizeGroupNameSanitizeReplacement(groupNameSanitizeReplacement);
|
||||||
return Regex.Replace(segment, @"[\s\-]", match => replacement);
|
return Regex.Replace(segment, AdUnsafeGroupNameCharactersPattern, match => replacement);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static string NormalizeGroupNameSanitizeReplacement(string replacement)
|
public static string NormalizeGroupNameSanitizeReplacement(string replacement)
|
||||||
|
|||||||
@@ -237,9 +237,11 @@ Die Normalisierung der dynamischen Pfadbestandteile wird ueber `AdditionalConfig
|
|||||||
|
|
||||||
`NtfsGroupNameSanitizeReplacement` steuert das Ersatz-/Trennzeichen fuer dynamische Pfadbestandteile:
|
`NtfsGroupNameSanitizeReplacement` steuert das Ersatz-/Trennzeichen fuer dynamische Pfadbestandteile:
|
||||||
|
|
||||||
- nicht gesetzt: bisheriges Verhalten, Leerzeichen und Bindestriche werden durch `_` ersetzt und Pfadsegmente werden mit `_` verbunden
|
- nicht gesetzt: AD-kritische Zeichen 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 z.B. `.`: AD-kritische Zeichen werden durch `.` ersetzt und Pfadsegmente werden mit `.` verbunden
|
||||||
- gesetzt auf einen leeren Wert, `<empty>`, `empty`, `none` oder `remove`: Leerzeichen/Bindestriche werden entfernt und Pfadsegmente ohne Trennzeichen verbunden
|
- gesetzt auf einen leeren Wert, `<empty>`, `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.
|
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.
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user