public async Task InvokeAsync(HttpContext context, IAutService autService) { if (context.Request.Path.StartsWithSegments(new PathString("/Api"))) { string claveAplicacion = TokenHelper.ObtenerClaveAplicacionDeHeaders(context.Request.Headers); if (string.IsNullOrEmpty(claveAplicacion)) { context.Response.StatusCode = StatusCodes.Status403Forbidden; context.Response.ContentType = MediaTypeNames.Text.Plain; await context.Response.WriteAsync($"Missing {RiskConstants.HEADER_RISK_APP_KEY}"); return; } else { var respValidarClaveAplicacion = autService.ValidarClaveAplicacion(claveAplicacion); if (!respValidarClaveAplicacion.Codigo.Equals(RiskConstants.CODIGO_OK)) { context.Response.StatusCode = StatusCodes.Status403Forbidden; context.Response.ContentType = MediaTypeNames.Text.Plain; await context.Response.WriteAsync($"Invalid {RiskConstants.HEADER_RISK_APP_KEY}"); return; } } } // Call the next delegate/middleware in the pipeline await _next(context); }
public static string GenerarAccessToken(string usuario, IAutService autService, IGenService genService) { var respDatosUsuario = autService.DatosUsuario(usuario); if (!respDatosUsuario.Codigo.Equals(RiskConstants.CODIGO_OK)) { return(string.Empty); } Usuario datosUsuario = respDatosUsuario.Datos; // Crea la lista de claims (pertenencias, características) del usuario List <Claim> claims = new List <Claim>(); claims.Add(new Claim(ClaimTypes.Name, datosUsuario.Alias)); claims.Add(new Claim(ClaimTypes.GivenName, datosUsuario.Nombre ?? "")); claims.Add(new Claim(ClaimTypes.Surname, datosUsuario.Apellido ?? "")); claims.Add(new Claim(ClaimTypes.Email, datosUsuario.DireccionCorreo ?? "")); //claimsList.Add(new Claim(ClaimTypes.HomePhone, usuario.NumeroTelefono ?? "")); claims.Add(new Claim(ClaimTypes.GroupSid, datosUsuario.Origen.ToString() ?? "")); // Agrega los roles del usuario a la lista de claims foreach (var rol in datosUsuario.Roles) { claims.Add(new Claim(ClaimTypes.Role, rol.Nombre)); } var respTiempoExpiracionToken = autService.TiempoExpiracionToken(TipoToken.AccessToken); if (!respTiempoExpiracionToken.Codigo.Equals(RiskConstants.CODIGO_OK)) { return(string.Empty); } int tiempoExpiracion = int.Parse(respTiempoExpiracionToken.Datos.Contenido); var respValorParametro = genService.ValorParametro("CLAVE_VALIDACION_ACCESS_TOKEN"); if (!respValorParametro.Codigo.Equals(RiskConstants.CODIGO_OK)) { return(string.Empty); } var signingKey = Encoding.ASCII.GetBytes(respValorParametro.Datos.Contenido); var tokenDescriptor = new SecurityTokenDescriptor { Subject = new ClaimsIdentity(claims.ToArray()), Expires = DateTime.UtcNow.AddSeconds(tiempoExpiracion), SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(signingKey), SecurityAlgorithms.HmacSha256Signature) }; var tokenHandler = new JwtSecurityTokenHandler(); var createdToken = tokenHandler.CreateToken(tokenDescriptor); return(tokenHandler.WriteToken(createdToken)); }
public AccountController(IAutService autService) { this._AutService = autService; }
public RiskSecurityTokenValidator(IAutService autService, IGenService genService) { _autService = autService; _genService = genService; _tokenHandler = new JwtSecurityTokenHandler(); }
public static void RegistrarDispositivo(string tokenDispositivo, IAutService autService, INotificationHubClientConnection notificationHubClientConnection) { if (notificationHubClientConnection.Hub == null) { return; } var respDatosDispositivo = autService.DatosDispositivo(tokenDispositivo); if (!respDatosDispositivo.Codigo.Equals(RiskConstants.CODIGO_OK)) { return; } Dispositivo dispositivo = respDatosDispositivo.Datos; if (dispositivo.TokenNotificacion == null || dispositivo.TokenNotificacion.Equals(string.Empty)) { return; } NotificationPlatform platform; switch (dispositivo.PlataformaNotificacion) { case "wns": platform = NotificationPlatform.Wns; break; case "apns": platform = NotificationPlatform.Apns; break; case "mpns": platform = NotificationPlatform.Mpns; break; case "fcm": platform = NotificationPlatform.Fcm; break; case "adm": platform = NotificationPlatform.Adm; break; case "baidu": platform = NotificationPlatform.Baidu; break; default: platform = NotificationPlatform.Fcm; break; } List <string> tags = new List <string>(); if (dispositivo.Suscripciones != null) { foreach (var item in dispositivo.Suscripciones) { tags.Add(item.Contenido); } } var templates = new Dictionary <string, InstallationTemplate>(); if (dispositivo.Plantillas != null) { foreach (var item in dispositivo.Plantillas) { templates.Add(item.Nombre, new InstallationTemplate { Body = item.Contenido }); } } Installation installation = new Installation { InstallationId = dispositivo.TokenDispositivo, Platform = platform, PushChannel = dispositivo.TokenNotificacion, PushChannelExpired = false, Tags = tags, Templates = templates }; notificationHubClientConnection.Hub.CreateOrUpdateInstallation(installation); }
public AutController(IAutService autService, IGenService genService, INotificationHubClientConnection notificationHubClientConnection, IConfiguration configuration) : base(configuration) { _autService = autService; _genService = genService; _notificationHubClientConnection = notificationHubClientConnection; }