From 5f09fac78b5879b60ef3e7d9efa38b2617bbb9b3 Mon Sep 17 00:00:00 2001 From: Luis M Date: Wed, 13 Mar 2024 15:31:47 -0500 Subject: [PATCH] Implementacion LDAP en AdminUsuarios (login) --- BackApiGateway.sln | 12 +++---- .../MsUsuarios/Context/ModelContext.cs | 11 ++----- .../MsUsuarios/Controllers/AuthController.cs | 33 ++++++++++++++++--- .../MsUsuarios/appsettings.Development.json | 2 +- 4 files changed, 38 insertions(+), 20 deletions(-) diff --git a/BackApiGateway.sln b/BackApiGateway.sln index 7f79220..fd144b6 100644 --- a/BackApiGateway.sln +++ b/BackApiGateway.sln @@ -17,7 +17,7 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MSAdminUsuarios", "Microser EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "IntegradorBE", "Microservicios\IntegradorBE\IntegradorBE.csproj", "{E3B575F9-4A18-43E6-A542-7CC29B086752}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LdapLoginLib", "LdapLoginLib\LdapLoginLib.csproj", "{6E864339-08B2-4C2F-909C-FCF0392E3F6D}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LdapLoginLib", "LdapLoginLib\LdapLoginLib.csproj", "{16DD05BC-4EA2-424D-BEAC-1412A8EE38BC}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -41,10 +41,10 @@ Global {E3B575F9-4A18-43E6-A542-7CC29B086752}.Debug|Any CPU.Build.0 = Debug|Any CPU {E3B575F9-4A18-43E6-A542-7CC29B086752}.Release|Any CPU.ActiveCfg = Release|Any CPU {E3B575F9-4A18-43E6-A542-7CC29B086752}.Release|Any CPU.Build.0 = Release|Any CPU - {6E864339-08B2-4C2F-909C-FCF0392E3F6D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {6E864339-08B2-4C2F-909C-FCF0392E3F6D}.Debug|Any CPU.Build.0 = Debug|Any CPU - {6E864339-08B2-4C2F-909C-FCF0392E3F6D}.Release|Any CPU.ActiveCfg = Release|Any CPU - {6E864339-08B2-4C2F-909C-FCF0392E3F6D}.Release|Any CPU.Build.0 = Release|Any CPU + {16DD05BC-4EA2-424D-BEAC-1412A8EE38BC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {16DD05BC-4EA2-424D-BEAC-1412A8EE38BC}.Debug|Any CPU.Build.0 = Debug|Any CPU + {16DD05BC-4EA2-424D-BEAC-1412A8EE38BC}.Release|Any CPU.ActiveCfg = Release|Any CPU + {16DD05BC-4EA2-424D-BEAC-1412A8EE38BC}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -54,7 +54,7 @@ Global {76522272-9D28-4168-8296-AFC933D22650} = {F491CF9B-9CF8-4F3B-BBD7-A282F7DC1D6D} {D0B80363-4C96-413F-8C82-48FCF2CD7F57} = {A449A86B-39E4-4EEB-B7C6-B6B12A0CBD2E} {E3B575F9-4A18-43E6-A542-7CC29B086752} = {A449A86B-39E4-4EEB-B7C6-B6B12A0CBD2E} - {6E864339-08B2-4C2F-909C-FCF0392E3F6D} = {F491CF9B-9CF8-4F3B-BBD7-A282F7DC1D6D} + {16DD05BC-4EA2-424D-BEAC-1412A8EE38BC} = {F491CF9B-9CF8-4F3B-BBD7-A282F7DC1D6D} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {EC576D5A-ADE3-40CC-BF55-7E52E6F18AC4} diff --git a/Microservicios/MsUsuarios/Context/ModelContext.cs b/Microservicios/MsUsuarios/Context/ModelContext.cs index 7d98a6a..8dcae6a 100644 --- a/Microservicios/MsUsuarios/Context/ModelContext.cs +++ b/Microservicios/MsUsuarios/Context/ModelContext.cs @@ -43,14 +43,9 @@ namespace MSAdminUsuarios.Context protected override void OnModelCreating(ModelBuilder modelBuilder) { - if (Debugger.IsAttached) - { - modelBuilder.HasDefaultSchema("HIMSCAP"); // => AFQ - } - else - { - modelBuilder.HasDefaultSchema("ADMIN"); - } + + //modelBuilder.HasDefaultSchema("HIMSCAP"); // => AFQ + modelBuilder.HasDefaultSchema("ADMIN"); modelBuilder.Entity(entity => diff --git a/Microservicios/MsUsuarios/Controllers/AuthController.cs b/Microservicios/MsUsuarios/Controllers/AuthController.cs index ad498d8..0eac5a6 100644 --- a/Microservicios/MsUsuarios/Controllers/AuthController.cs +++ b/Microservicios/MsUsuarios/Controllers/AuthController.cs @@ -5,6 +5,7 @@ using MSAdminUsuarios.Context; using Newtonsoft.Json.Linq; using Security; using System.IdentityModel.Tokens.Jwt; +using System.Reflection.Metadata; using System.Security.Claims; using System.Text; @@ -16,6 +17,8 @@ namespace MSAdminUsuarios.Controllers { private readonly ModelContext _context; private readonly Encripter _encript = new(); + private readonly LDAP _ldap = new(); + public AuthController(ModelContext context) { _context = context; @@ -28,15 +31,32 @@ namespace MSAdminUsuarios.Controllers { if (!_encript.IsValid) return BadRequest("Lectura inv�lida"); - if (login.TX_LOGINNAME_USUMS == null) return BadRequest("Es necesario ingresar un correo"); - if (login.TX_PASSWORD_USUMS == null) return BadRequest("Es necesario ingresar una contrase�a"); + if (login.TX_LOGINNAME_USUMS == null) return BadRequest("Es necesario ingresar un usuario"); + + if ( + string.IsNullOrEmpty(login.TX_LOGINNAME_USUMS?.Trim()) && + string.IsNullOrEmpty(login.TX_PKDOC_USUMS?.Trim()) && + string.IsNullOrEmpty(login.TX_CORREO_USUMS?.Trim()) + ) + { + throw new Exception("Es necesario ingresar un usuario."); + } + + if (login.TX_PASSWORD_USUMS == null) return BadRequest("Es necesario ingresar una contraseña."); USUARIO? userldap = _context.USUARIOSMs.FirstOrDefault(u => u.TX_LOGINNAME_USUMS == login.TX_LOGINNAME_USUMS); if (userldap == null) return BadRequest("usuario"); if(userldap.BL_VIENELDAP_USUMS == 1) { - bool boolldap = LoginLib.Login(login.TX_LOGINNAME_USUMS, login.TX_PASSWORD_USUMS); - if( boolldap == true) { + //bool boolldap = LoginLib.Login(login.TX_LOGINNAME_USUMS, login.TX_PASSWORD_USUMS); + bool loggedWithLdap = _ldap.Login( + username: login.TX_LOGINNAME_USUMS, + document: login.TX_PKDOC_USUMS, + email: login.TX_CORREO_USUMS, + password: login.TX_PASSWORD_USUMS + ); + + if (loggedWithLdap == true) { string token = Token(userldap); return Ok(new { @@ -244,7 +264,8 @@ namespace MSAdminUsuarios.Controllers new Claim("tipo_doc", tipo_doc.ToString()), new Claim("pk", user.NU_PK_USUMS.ToString()), new Claim("sedes", user.TX_SEDES_USUMS == null ? "" : user.TX_SEDES_USUMS), - new Claim("TX_NOMBRE_PVD", user.TX_NOMBRE_PVD ?? "{}") + new Claim("TX_NOMBRE_PVD", user.TX_NOMBRE_PVD ?? "{}"), + new Claim("uid", user.TX_UUID_USUMS.ToString()) }); @@ -318,6 +339,8 @@ namespace MSAdminUsuarios.Controllers public class LoginModel { public string? TX_LOGINNAME_USUMS { get; set; } + public string? TX_CORREO_USUMS { get; set; } + public string? TX_PKDOC_USUMS { get; set; } public string? TX_PASSWORD_USUMS { get; set; } } diff --git a/Microservicios/MsUsuarios/appsettings.Development.json b/Microservicios/MsUsuarios/appsettings.Development.json index 0a72e82..29aae31 100644 --- a/Microservicios/MsUsuarios/appsettings.Development.json +++ b/Microservicios/MsUsuarios/appsettings.Development.json @@ -1,6 +1,6 @@ { "ConnectionStrings": { - "ConString": "user id=HIMSCAP;password=ITTASA2017;data source=(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=181.204.191.98)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=PROYECTOS)))" + "ConString": "user id=ADMIN;password=ITTASA2017;data source=(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=181.204.191.98)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=PROYECTOS)))" }, "RabbitMQConfig": { "HostName": "localhost",