public BodyToken CreateToken(string Correo, int ExpritationToken) { BodyToken TokenCreado = new BodyToken(); string llaveSecreta = "AXXI77700QRKNEJRNEJJ"; var claims = new[] { new Claim(JwtRegisteredClaimNames.UniqueName, Correo), new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString()) }; var Key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(llaveSecreta)); var creds = new SigningCredentials(Key, SecurityAlgorithms.HmacSha256); //var expiracion = DateTime.UtcNow.AddMinutes(5); var expiracion = DateTime.Now.AddMinutes(ExpritationToken); JwtSecurityToken token = new JwtSecurityToken( issuer: "banorte.com", audience: "banorte.com", claims: claims, expires: expiracion, signingCredentials: creds); TokenCreado.TokenCreated = new JwtSecurityTokenHandler().WriteToken(token); TokenCreado.TimeToken = expiracion.ToString(); return(TokenCreado); }
public BodyToken GeraToken(User usuario, TokenConfiguration pTokenConfigurations) { //SigningConfigurations signingConfigurations = new SigningConfigurations(); BodyToken token = new BodyToken(); try { ClaimsIdentity identity = new ClaimsIdentity( new GenericIdentity(usuario.firstName, "Login"), new[] { new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString("N")), new Claim(JwtRegisteredClaimNames.UniqueName, usuario.firstName) } ); //TODO: Alterar para que valores venham do appsetinhs.json DateTime dataCriacao = DateTime.Now; DateTime dataExpiracao = dataCriacao + TimeSpan.FromHours(configuracaoToken.Hours); var handler = new JwtSecurityTokenHandler(); var securityToken = handler.CreateToken(new SecurityTokenDescriptor { Issuer = configuracaoToken.Issuer, Audience = configuracaoToken.Audience, SigningCredentials = signingConfigurations.SigningCredentials, Subject = identity, NotBefore = dataCriacao, Expires = dataExpiracao }); token.token = handler.WriteToken(securityToken); token.dtStartToken = DateTime.Now; token.dtExpirationToken = DateTime.Now.AddHours(pTokenConfigurations.Hours); } catch (Exception ex) { throw ex; } return(token); }
public static MethodResponse <ActiveResponse> loginUsuario(Credential user, int tipo) { var Response = new MethodResponse <ActiveResponse>(); Validate ActiveUser = new Validate(); GenerateToken NewToken = new GenerateToken(); ActiveResponse objectActive = new ActiveResponse(); int expiraToken; BodyToken Token = new BodyToken(); if (string.IsNullOrEmpty(user.User)) { Response.Code = 0; Response.Message = string.Format("El usuario no puede ser nulo"); } else if (string.IsNullOrEmpty(user.Password)) { Response.Code = 0; Response.Message = string.Format("La contraseña no puede ser nula"); } else if (string.IsNullOrEmpty(user.App)) { Response.Code = 0; Response.Message = string.Format("El código de aplicación no puede ser nulo"); } else { try { expiraToken = user.ExpiracionToken == 0 ? 60 : user.ExpiracionToken; //Checar IP //string ip = HttpContext.Connection.RemoteIpAddress.ToString(); var MetaDatos = ActiveUser.GetUserActive(user.User, user.Password, user.App, expiraToken, tipo); if (MetaDatos.Code != 0) { //Requiere doble factor bool requiere; requiere = EjecucionSP.RequiereDobleFactor(user.App, MetaDatos.Result.Permisos.Area, MetaDatos.Result.Permisos.Perfil); if (requiere) { int config; //Valida si el usuario tiene configurado el token para doble factor config = EjecucionSP.UsuarioConfigurado(user.User, user.App); if (config > 0) { //Se devuelve el response encriptado string llaveDesbloqueo = Encriptacion.GeneraLlave(config); Response.Code = 3; Response.Result = Encriptacion.EncriptaResponse(MetaDatos.Result, Encriptacion.GeneraLlave(config)); Response.Result.IDUsuario = config; EjecucionSP.ActualizaLlaveDesbloqueo(config, user.App, llaveDesbloqueo); } else { //Si no está configurado se devuelve el código QR de configuración ResponseQRGoogle codQR = new ResponseQRGoogle(); ReponseApi res = DobleFactor.ObtenerCodigoConfig(user.App, MetaDatos.Result.Apellidos, MetaDatos.Result.Nombre, user.User, MetaDatos.Result.Telefono, MetaDatos.Result.Email); codQR = res.Respuesta; int idUsuario = Int32.Parse(res.Mensaje); string llaveDesbloqueo = Encriptacion.GeneraLlave(idUsuario); Response.Code = 2; Response.Result = Encriptacion.EncriptaResponse(MetaDatos.Result, llaveDesbloqueo); Response.Result.CodigoQR = codQR; Response.Result.IDUsuario = idUsuario; EjecucionSP.ActualizaLlaveDesbloqueo(idUsuario, user.App, llaveDesbloqueo); } } else { // todo paso bien Response.Code = 1; Response.Result = MetaDatos.Result; // genera token de seguridad Token = NewToken.CreateToken(user.User, user.ExpiracionToken); //Inserta registro en bitácora EjecucionSP.BitacoraAcceso(user.User, user.App, "172.154.22.40"); // se añade al objeto token sus propiedades //InformationToken infoToken = new InformationToken(); //infoToken.Token = Token.TokenCreated; //infoToken.ExpiracionToken = Token.TimeToken; //Response.Result.InformacionToken.Add(infoToken); } } else { Response.Code = 0; Response.Message = MetaDatos.Message; } } catch (Exception ex) { throw ex; } } return(Response); }