private bool ValidateSession(string sesId, decimal userId)
        {
            bool           sessionValid    = false;
            UnityContainer container       = new UnityContainer();
            var            authentication  = new SystemManagement.Business.Authentication.Authentication();
            var            validateSession = authentication.ValidateSession(new MethodParameters.Authentication.ValidateSessionIn()
            {
                sessionId = sesId,
                userId    = userId
            });

            sessionValid = validateSession.result == Entities.Common.Result.Success;
            return(sessionValid);
        }
        public ValidateTokenOut ValidateToken(ValidateTokenIn input)
        {
            var    output       = new ValidateTokenOut();
            AES256 aes256       = new AES256();
            string tokenDecrypt = aes256.Decrypt(input.token);
            // Se obtiene la información del token
            ClaimsPrincipal simplePrinciple = GetPrincipal(tokenDecrypt);

            if (simplePrinciple != null)
            {
                // Se obtienen las propiedades
                var identity = simplePrinciple.Identity as ClaimsIdentity;
                if (identity != null)
                {
                    // Si no esta autenticado se denega el acceso
                    if (identity.IsAuthenticated)
                    {
                        // Se obtienen las variables de las propiedades que se le asignaron al Token cuando se genero
                        var sessionId = identity.FindFirst("sessionId");
                        var usrID     = identity.FindFirst("usrID");
                        var ip        = System.Web.HttpContext.Current.Request.UserHostAddress;
                        if (sessionId?.Value != null &&
                            usrID?.Value != null &&
                            ip != null)
                        {
                            var autentication      = new SystemManagement.Business.Authentication.Authentication();
                            var validateSessionOut = autentication.ValidateSession(new MethodParameters.Authentication.ValidateSessionIn()
                            {
                                sessionId = sessionId.Value,
                                userId    = Convert.ToDecimal(usrID.Value)
                            });
                            if (validateSessionOut.result == Entities.Common.Result.Success &&
                                validateSessionOut.session.usrID == Convert.ToDecimal(usrID.Value) &&
                                validateSessionOut.session.sesID == sessionId.Value &&
                                validateSessionOut.session.ses_status == "V")
                            {
                                output.tokenInformation           = new Entities.Authentication.TokenInformation();
                                output.tokenInformation.sessionId = sessionId.Value;
                                output.tokenInformation.usrID     = usrID.Value;
                            }
                        }
                    }
                }
            }
            return(output);
        }
Exemplo n.º 3
0
        public LoginOut Login(LoginIn input)
        {
            var output = new LoginOut()
            {
                result = Entities.Common.Result.Error
            };
            var request    = new Business.User.User();
            var getUserOut = request.GetUser(new MethodParameters.User.GetUserIn()
            {
                usr_userName = input.usr_userName
            });

            if (getUserOut.result == Entities.Common.Result.Success)
            {
                if (getUserOut.user.usr_userName == input.usr_userName)
                {
                    var passwordIn = Common.Security.Encryption.Encrypt(input.usr_password, getUserOut.user.usr_userName);
                    var passwordBd = getUserOut.user.usr_password;

                    if (passwordIn == passwordBd)
                    {
                        string sessionId        = Guid.NewGuid().ToString();
                        var    authentication   = new SystemManagement.Business.Authentication.Authentication();
                        var    createSessionOut = authentication.CreateSession(new MethodParameters.Authentication.CreateSessionIn()
                        {
                            sessionId = sessionId,
                            userId    = getUserOut.user.usrID
                        });

                        if (createSessionOut.result == Entities.Common.Result.Success)
                        {
                            output.sessionId = sessionId;
                            output.user      = getUserOut.user;;

                            var jwtManager       = new SystemManagement.Business.Authentication.JwtManager();
                            var generateTokenOut = jwtManager.GenerateToken(new MethodParameters.Authentication.JwtManager.GenerateTokenIn()
                            {
                                sessionId = sessionId,
                                usrID     = getUserOut.user.usrID
                            });

                            if (generateTokenOut.result == Entities.Common.Result.Success)
                            {
                                output.token  = generateTokenOut.token;
                                output.user   = getUserOut.user;
                                output.result = Entities.Common.Result.Success;
                            }
                        }
                    }
                    else
                    {
                        output.message = "Credenciales incorrectas, verifique e intente nuevamente";
                    }
                }
                else
                {
                    output.message = "Credenciales incorrectas, verifique e intente nuevamente";
                }
            }
            else
            {
                output.message = "Credenciales incorrectas, verifique e intente nuevamente";
            }


            return(output);
        }