From f5471a8d01bc977030a6af9b6881b62c8e002d26 Mon Sep 17 00:00:00 2001 From: TekH Date: Mon, 11 Aug 2025 10:51:58 +0200 Subject: [PATCH] =?UTF-8?q?feat(api):=20DirSearchRoot-Modell=20f=C3=BCr=20?= =?UTF-8?q?die=20Konfiguration=20der=20LDAP-Verzeichnissuche=20und=20die?= =?UTF-8?q?=20Konvertierung=20zu=20DirectoryEntry=20hinzuf=C3=BCgen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Models/DirSearchRoot.cs | 22 +++++++++++++++++++ src/DigitalData.UserManager.API/Program.cs | 1 + .../appsettings.json | 2 ++ 3 files changed, 25 insertions(+) create mode 100644 src/DigitalData.UserManager.API/Models/DirSearchRoot.cs diff --git a/src/DigitalData.UserManager.API/Models/DirSearchRoot.cs b/src/DigitalData.UserManager.API/Models/DirSearchRoot.cs new file mode 100644 index 0000000..edb9f89 --- /dev/null +++ b/src/DigitalData.UserManager.API/Models/DirSearchRoot.cs @@ -0,0 +1,22 @@ +using DigitalData.Core.Application; +using System.DirectoryServices; + +namespace DigitalData.UserManager.API.Models; + +[Obsolete("Use ActiveDirectory.API")] +public class DirSearchRoot : DirectorySearchOptions +{ + public string Path => $"LDAP://{ServerName}/{Root}"; + + public string? Username { get; set; } + + public string? Password { get; set; } + + [System.Diagnostics.CodeAnalysis.SuppressMessage("Interoperability", "CA1416:Validate platform compatibility", Justification = "")] + public DirectoryEntry ToDirectoryEntry => new () + { + Path = Path, + Username = Username, + Password = Password + }; +} \ No newline at end of file diff --git a/src/DigitalData.UserManager.API/Program.cs b/src/DigitalData.UserManager.API/Program.cs index b259d67..0e472de 100644 --- a/src/DigitalData.UserManager.API/Program.cs +++ b/src/DigitalData.UserManager.API/Program.cs @@ -82,6 +82,7 @@ try { builder.ConfigureBySection(); builder.Services.AddDirectorySearchService(config.GetSection("DirectorySearchOptions")); + builder.Services.Configure(config.GetSection("DirectorySearchOptions")); builder.Services.AddJWTService(user => new SecurityTokenDescriptor() { Claims = user.ToClaimList().ToDictionary(claim => claim.Type, claim => claim.Value as object) diff --git a/src/DigitalData.UserManager.API/appsettings.json b/src/DigitalData.UserManager.API/appsettings.json index cc6f13e..8e8aa78 100644 --- a/src/DigitalData.UserManager.API/appsettings.json +++ b/src/DigitalData.UserManager.API/appsettings.json @@ -13,6 +13,8 @@ "DirectorySearchOptions": { "ServerName": "DD-VMP01-DC01", "Root": "DC=dd-gan,DC=local,DC=digitaldata,DC=works", + "Username": "FABRIK19-User01", + "Password": "9bWOr0UGuHn_7VkC", "UserCacheExpirationDays": 1, "CustomSearchFilters": { "User": "(&(objectClass=user)(sAMAccountName=*))",