public UsuarioCidiDto ObtenerUsuarioActivo(string hash) { GAP.Repository.Cidi.CidiUtil.Usuario usuario; Entrada entrada = new Entrada(); entrada.IdAplicacion = GlobalVars.CiDiIdAplicacion; entrada.Contrasenia = GlobalVars.CiDiPassAplicacion; entrada.HashCookie = hash; entrada.TimeStamp = DateTime.Now.ToString("yyyyMMddHHmmssfff"); entrada.TokenValue = Config.ObtenerToken_SHA1(entrada.TimeStamp); usuario = Config.LlamarWebAPI <Entrada, GAP.Repository.Cidi.CidiUtil.Usuario>(APICuenta.Usuario.Obtener_Usuario_Aplicacion, entrada); UsuarioCidiDto usuarioCidiDto = null; if (usuario.Respuesta.Resultado == GlobalVars.CiDi_OK) { usuarioCidiDto = new UsuarioCidiDto { Nombre = usuario.Nombre, Apellido = usuario.Apellido, Cuil = usuario.CUIL, Email = usuario.Email }; } return(usuarioCidiDto); }
public ObtenerUsuarioActivoResult Retrieve(ObtenerUsuarioActivoQuery query) { _obtenerUsuarioActivoResult = new ObtenerUsuarioActivoResult(); UsuarioCidiDto usuarioCidiDto = _repositryCidi.ObtenerUsuarioActivo(query.Hash); _obtenerUsuarioActivoResult.UsuarioDto = usuarioCidiDto; return(_obtenerUsuarioActivoResult); }
public string GetEmailUsuarioLogueado() { UsuarioCidiDto usuarioCidi = UsuarioCidiFactory.ValidarUsuarioCidi(); return(usuarioCidi == null ? String.Empty : usuarioCidi.Email); }
/// <summary> /// Se controla que el recurso solicitado (a tracés de un end-point) este permitido /// para el usuario actual autenticado. /// </summary> /// <param name="actionContext"></param> /// <param name="cancellationToken"></param> /// <returns></returns> public override Task OnAuthorizationAsync(HttpActionContext actionContext, System.Threading.CancellationToken cancellationToken) { ContextSingleton.InitBaseUrl(); var principal = actionContext.RequestContext.Principal as ClaimsPrincipal; // Para endpoints con atributo AllowAnonymous evitamos la autenticación. bool skipAuthorization = actionContext.ActionDescriptor.GetCustomAttributes <AllowAnonymousAttribute>().Any() || actionContext.ActionDescriptor.ControllerDescriptor.GetCustomAttributes <AllowAnonymousAttribute>().Any(); if (skipAuthorization) { return(Task.FromResult <object>(null)); } //Validación interna contra token. if (!principal.Identity.IsAuthenticated) { actionContext.Response = actionContext.Request.CreateResponse(HttpStatusCode.Unauthorized); return(Task.FromResult <object>(null)); } //Validación de control de cambio de usuario por fuera de la aplicación. var userCookie = HttpContext.Current.Request.Cookies["CiDi"]; if (userCookie == null) { actionContext.Response = actionContext.Request.CreateResponse(HttpStatusCode.NotFound); } //bool huboCambioDeUsuario = true; //UsuarioCidiDto usuarioCidi = UsuarioCidiFactory.ValidarUsuarioCidi(); //if (usuarioCidi != null) //{ // LoguinCidiQuery query = new LoguinCidiQuery // { // Cuil = usuarioCidi.Cuil // }; // QueryDispatcher _QueryDispatcher = ServiceLocator.Current.GetInstance<QueryDispatcher>(); // LoguinCidiQueryResult queryResult = _QueryDispatcher.Dispatch<LoguinCidiQuery, LoguinCidiQueryResult>(query); // if (queryResult.UsuarioDto != null && queryResult.UsuarioDto.Id != null) // { // if (queryResult.UsuarioDto.Cuil == usuarioCidi.Cuil) // { // huboCambioDeUsuario = false; // } // } //} //if(huboCambioDeUsuario) //{ // actionContext.Response = actionContext.Request.CreateResponse(HttpStatusCode.NotFound); //} //Validación de autorización (verifica si el usuario tiene permisos contra URLs) if (GlobalVars.AuthenticationByRouteController) { string endPointAbsolutePath = actionContext.Request.RequestUri.AbsolutePath; int index = endPointAbsolutePath.ToLower().IndexOf("/api/"); if (index != -1) { // Verifico con el listado de end-points disponibles del usuario autenticado. if (principal.Claims.Count() == 0) { actionContext.Response = actionContext.Request.CreateResponse(HttpStatusCode.Forbidden); //actionContext.Response.Headers.Add("X-Error", "gob-permiso-denegado"); return(Task.FromResult <object>(null)); } string usuario = principal.Claims.ToList()[1].ToString(); UsuarioCidiDto usuarioLogueado = JsonConvert.DeserializeObject <UsuarioCidiDto>(usuario.Substring(6)); string perfilId = ""; if (!FuncionalidadesSingleton.Instance.tienePermisos(usuarioLogueado.IdRol.ToString(), endPointAbsolutePath.Substring(4))) { actionContext.Response = actionContext.Request.CreateResponse(HttpStatusCode.Forbidden); //actionContext.Response.Headers.Add("X-Error", "gob-permiso-denegado"); return(Task.FromResult <object>(null)); } } } return(Task.FromResult <object>(null)); }
public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context) { var allowedOrigin = context.OwinContext.Get <string>("as:clientAllowedOrigin"); if (allowedOrigin == null) { allowedOrigin = "*"; } context.OwinContext.Response.Headers.Add("Access-Control-Allow-Origin", new[] { allowedOrigin }); try { bool registradoEnSalasCuna = false; bool logueadoEnCidi = false; UsuarioCidiDto usuarioCidi = UsuarioCidiFactory.ValidarUsuarioCidi(); if (usuarioCidi != null) { logueadoEnCidi = true; LoguinCidiQuery query = new LoguinCidiQuery { Cuil = usuarioCidi.Cuil }; QueryDispatcher _QueryDispatcher = ServiceLocator.Current.GetInstance <QueryDispatcher>(); LoguinCidiQueryResult queryResult = _QueryDispatcher.Dispatch <LoguinCidiQuery, LoguinCidiQueryResult>(query); if (queryResult.UsuarioDto != null && queryResult.UsuarioDto.Id != 0) { var identity = new ClaimsIdentity(context.Options.AuthenticationType); queryResult.UsuarioDto.Apellido = usuarioCidi.Apellido; queryResult.UsuarioDto.Nombre = usuarioCidi.Nombre; Claim usuarioClimb = new Claim("User", new JavaScriptSerializer().Serialize(queryResult.UsuarioDto)); identity.AddClaim(new Claim(ClaimTypes.Name, usuarioCidi.Cuil.ToString())); identity.AddClaim(usuarioClimb); UrlCidiQueryResult urlsCidiResult = _QueryDispatcher.Dispatch <UrlCidiQuery, UrlCidiQueryResult>(null); //**// IDictionary <string, string> data = new Dictionary <string, string> { //{ "Paginas", JsonConvert.SerializeObject(queryResult.FuncionalidadesDto) }, { "User", JsonConvert.SerializeObject(queryResult.UsuarioDto) }, { "UrlCidi", urlsCidiResult.UrlCidi }, { "UrlCerrarSesionCidi", urlsCidiResult.UrlCidiLogout }, { "UrlInicarSesionCidi", urlsCidiResult.UrlCidiLogin }, { "as:client_id", context.ClientId == null ? string.Empty : context.ClientId } }; AuthenticationProperties properties = new AuthenticationProperties(data); Microsoft.Owin.Security.AuthenticationTicket ticket = new Microsoft.Owin.Security.AuthenticationTicket(identity, properties); context.Validated(ticket); registradoEnSalasCuna = true; } } if (!logueadoEnCidi) { //El usuario no está logueado a través de CIDI. context.SetError("NO_AUTENTICADO_EN_CIDI", ""); context.Response.ReasonPhrase = "NO_AUTENTICADO_EN_CIDI"; } else if (!registradoEnSalasCuna) { //El usuario está logueado a través CIDI pero no se encuentra registrado en Salas Cuna. context.SetError("NO_REGISTRADO_EN_SALAS_CUNA", ""); //context. context.Response.ReasonPhrase = "NO_REGISTRADO_EN_SALAS_CUNA"; } } catch (Exception e) { context.SetError("Server error", e.StackTrace); context.Rejected(); } }