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);
        }
Esempio n. 2
0
        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;
 }
Esempio n. 4
0
 public RiskSecurityTokenValidator(IAutService autService, IGenService genService)
 {
     _autService   = autService;
     _genService   = genService;
     _tokenHandler = new JwtSecurityTokenHandler();
 }
Esempio n. 5
0
        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);
        }
Esempio n. 6
0
 public AutController(IAutService autService, IGenService genService, INotificationHubClientConnection notificationHubClientConnection, IConfiguration configuration) : base(configuration)
 {
     _autService = autService;
     _genService = genService;
     _notificationHubClientConnection = notificationHubClientConnection;
 }