public override Task ValidateIdentity(OAuthValidateIdentityContext context) { var ipToken = context.Ticket.Properties.Dictionary["UserIp"]; var ipRequest = context.Request.RemoteIpAddress; if (!ipToken.Equals(ipRequest)) { context.Rejected(); context.SetError("MENSAJE_ERROR_TOKEN_IP_INVALIDA"); return(Task.FromResult <object>(null)); } if (context.Request.Headers.ContainsKey("Authorization")) { var tokenRequest = context.Request.Headers["Authorization"].Replace("Bearer ", "").Trim(); var strIdUsuario = context.Ticket.Properties.Dictionary["IdUsuario"]; //var tokenTaskHelper = TokenTaskHelper.GetInstance(); var tokenUsuario = TokenTaskHelper.GetToken(strIdUsuario); if (tokenUsuario == null || !tokenUsuario.Equals(tokenRequest)) { var login = new LoginController(); var idUsuario = Int64.Parse(strIdUsuario); var tokenAux = login.GetTokenUsuario(idUsuario); tokenUsuario = TokenTaskHelper.SetToken(strIdUsuario, tokenAux); } if (!tokenUsuario.Equals(tokenRequest)) { context.Rejected(); context.SetError("MENSAJE_ERROR_TOKEN_USUAIRO_INCONSISTENTE"); return(Task.FromResult <object>(null)); } } return(base.ValidateIdentity(context)); }
/// <summary> /// Actualiza el token antes de retornar la respuesta. /// </summary> /// <param name="context">Contexto actual de la solicitud.</param> /// <returns>Task retornado por la clase padre.</returns> public override Task TokenEndpointResponse(OAuthTokenEndpointResponseContext context) { var token = context.AccessToken; var strIdUsuario = context.Properties.Dictionary["IdUsuario"]; var idUsuario = Int64.Parse(context.Properties.Dictionary["IdUsuario"]); var login = new LoginController(); login.ActualizaToken(idUsuario, token); //var tokenTaskHelper = TokenTaskHelper.GetInstance(); TokenTaskHelper.SetToken(strIdUsuario, token); return(base.TokenEndpointResponse(context)); }