From 7379fb09dcdfb9e2d9adcea71c71a4183a1fa165 Mon Sep 17 00:00:00 2001 From: Marcio Date: Thu, 8 Aug 2024 16:53:20 -0300 Subject: [PATCH] Add lockoutTime --- .../ActiveDirectoryToRestApi.csproj | 2 +- .../Controllers/UserController.cs | 2 +- src/ActiveDirectoryToRestApi/Models/User.cs | 2 ++ .../Services/LdapService.cs | 13 ++++++++++++- src/ActiveDirectoryToRestApi/appsettings.json | 4 ++-- 5 files changed, 18 insertions(+), 5 deletions(-) diff --git a/src/ActiveDirectoryToRestApi/ActiveDirectoryToRestApi.csproj b/src/ActiveDirectoryToRestApi/ActiveDirectoryToRestApi.csproj index 125b5d8..74603cd 100644 --- a/src/ActiveDirectoryToRestApi/ActiveDirectoryToRestApi.csproj +++ b/src/ActiveDirectoryToRestApi/ActiveDirectoryToRestApi.csproj @@ -9,7 +9,7 @@ d52504e9-ea6e-4152-a52e-467ca002e47c $(PackageVersion) $(PackageVersion) - 1.0.0.4 + 1.0.0.5 diff --git a/src/ActiveDirectoryToRestApi/Controllers/UserController.cs b/src/ActiveDirectoryToRestApi/Controllers/UserController.cs index b9bcf29..cb33ee7 100644 --- a/src/ActiveDirectoryToRestApi/Controllers/UserController.cs +++ b/src/ActiveDirectoryToRestApi/Controllers/UserController.cs @@ -17,7 +17,7 @@ public class UserController : ControllerBase } [HttpPost("/email")] - public ActionResult Email(string email = "test.user@zimbres.com") + public ActionResult Email(string email = "test.user@zimbres.loc") { var user = _ldapService.GetUserByEmail(email); if (user == null) diff --git a/src/ActiveDirectoryToRestApi/Models/User.cs b/src/ActiveDirectoryToRestApi/Models/User.cs index 645f8a3..e787430 100644 --- a/src/ActiveDirectoryToRestApi/Models/User.cs +++ b/src/ActiveDirectoryToRestApi/Models/User.cs @@ -15,6 +15,8 @@ public class User public string PasswordExpiration { get; set; } public bool Expired { get; set; } public string Expiration { get; set; } + public bool IsLocked { get; set; } + public string LockoutTime { get; set; } public string DistinguishedName { get; set; } public List Groups { get; set; } } diff --git a/src/ActiveDirectoryToRestApi/Services/LdapService.cs b/src/ActiveDirectoryToRestApi/Services/LdapService.cs index 71398ca..52aeb63 100644 --- a/src/ActiveDirectoryToRestApi/Services/LdapService.cs +++ b/src/ActiveDirectoryToRestApi/Services/LdapService.cs @@ -30,7 +30,7 @@ public class LdapService private User GetUser(string filter) { string[] attributesToReturn = { "givenName", "sn", "mail", "userPrincipalName", "displayName", "sAMAccountName", - "userAccountControl", "accountExpires", "memberOf", "distinguishedName", "pwdLastSet" }; + "userAccountControl", "accountExpires", "memberOf", "distinguishedName", "pwdLastSet", "lockoutTime" }; SearchRequest searchRequest = new(_ldapConfigs.DistinguishedName, filter, SearchScope.Subtree, attributesToReturn); @@ -40,6 +40,15 @@ public class LdapService { SearchResultEntry entry = searchResponse.Entries[0]; + bool isLocked = false; + string lockoutTime = string.Empty; + if (entry.Attributes.Contains("lockoutTime")) + { + var lockoutTimeTicks = entry.Attributes["lockoutTime"][0].ToString(); + isLocked = lockoutTimeTicks != "0"; + lockoutTime = lockoutTimeTicks.ConvertToDateTime(); + } + string userAccountControl = entry.Attributes["userAccountControl"][0].ToString(); string accountExpires = entry.Attributes["accountExpires"][0].ToString(); string expiration = accountExpires.ConvertToDateTime(); @@ -82,6 +91,8 @@ public class LdapService PasswordExpiration = passwordExpiration, Expiration = expiration, Expired = expired, + IsLocked = isLocked, + LockoutTime = lockoutTime, DistinguishedName = distinguishedName, Groups = groups }; diff --git a/src/ActiveDirectoryToRestApi/appsettings.json b/src/ActiveDirectoryToRestApi/appsettings.json index 07e17cc..23d279d 100644 --- a/src/ActiveDirectoryToRestApi/appsettings.json +++ b/src/ActiveDirectoryToRestApi/appsettings.json @@ -30,10 +30,10 @@ "Server": "192.168.100.25", "Port": 636, "UseSSL": true, - "DomainName": "AD", // (pre-Windows 2000) + "DomainName": "ZIMBRES", // (pre-Windows 2000) "User": "ldapAdmin", "Pass": "Thi$1sMyPassw0rd", - "DistinguishedName": "DC=ad,DC=zimbres,DC=com" + "DistinguishedName": "DC=zimbres,DC=loc" }, "Configuration": { "Authorization": "Bearer v63M9FlOhqAohJ7oGmFrhVIj",