Example #1
0
        public IActionResult PedirToken(
            [FromBody] PedirTokenRequest request)
        {
            Usuario usuario =
                _usuarioService.RecuperarPorCorreo(request.codigo);

            //Validar que haya recuperado
            if (usuario == null)
            {
                return(BadRequest("Usuario invalido: correo"));
            }

            //Validar la clave
            if (EncriptadorHelper.Decrypt(usuario.Password) != request.clave)
            {
                return(BadRequest("Usuario invalido: clave"));
            }

            //Metadata para el token
            Claim[] misClaims = new[] {
                new Claim("correo", usuario.Email),
                new Claim("id", usuario.IdUsuario.ToString())
            };
            //Generar el JWT  JwtSecurityToken

            var cred = new SymmetricSecurityKey(
                Encoding.UTF8.GetBytes(
                    Configuration["SemillaJWT"]
                    ));

            var firma = new SigningCredentials(cred, SecurityAlgorithms.HmacSha256);

            JwtSecurityToken jwt = new JwtSecurityToken(
                issuer: "midominio.com",
                audience: "midominio.com",
                claims: misClaims,
                expires: DateTime.Now.AddMinutes(5),
                signingCredentials: firma
                );

            //Devolver el hash
            string ruta = new JwtSecurityTokenHandler().WriteToken(jwt);

            return(Ok(
                       new {
                usuario = usuario,
                token = ruta
            }
                       ));
        }
Example #2
0
        /// <summary>
        /// Obtiene Token
        /// </summary>
        /// <param name="urlBase">p.ej. url = Application.Current.Resources["UrlAPI"].ToString()</param>
        /// <param name="servicePrefix">p.ej. /apiActores</param>
        /// <param name="controller">p.ej. /Personas</param>
        /// <param name="peticion">Models PedirTokenRequest</param>
        /// <returns></returns>
        public async Task <Respuesta> GetTokenAsync(string urlBase,
                                                    string servicePrefix,
                                                    string controller,
                                                    PedirTokenRequest peticion)
        {
            try
            {
                var requestString = JsonConvert.SerializeObject(peticion);
                var content       = new StringContent(requestString, Encoding.UTF8, "application/json");
                var client        = new HttpClient
                {
                    BaseAddress = new Uri(urlBase)
                };

                var url      = $"{servicePrefix}{controller}";
                var response = await client.PostAsync(url, content);

                var result = await response.Content.ReadAsStringAsync();

                if (!response.IsSuccessStatusCode)
                {
                    return(new Respuesta
                    {
                        EsExitoso = false,
                        Mensaje = result,
                        Resultado = null
                    });
                }

                var token = JsonConvert.DeserializeObject <PedirTokenRequest>(result);
                return(new Respuesta
                {
                    EsExitoso = true,
                    Mensaje = "",
                    Resultado = token
                });
            }
            catch (Exception ex)
            {
                return(new Respuesta
                {
                    EsExitoso = false,
                    Mensaje = ex.Message,
                    Resultado = null
                });
            }
        }