/// <summary> /// Valida las credenciales del usuario /// </summary> /// <returns></returns> protected override async Task <AuthenticateResult> HandleAuthenticateAsync() { AuthenticationTicket ticket; try { var authHeader = AuthenticationHeaderValue.Parse(Request.Headers[Constants.Authorization]); var credentialBytes = Convert.FromBase64String(authHeader.Parameter); var credentials = Encoding.UTF8.GetString(credentialBytes).Split(new[] { ':' }, 2); InputAuthenticateDto inputAuthenticateDto = new InputAuthenticateDto { password = credentials[1], username = credentials[0] }; AnswerAuthentication user = await AuthenticationService.AuthenticateV8(inputAuthenticateDto); var identity = new ClaimsIdentity(new[] { new Claim(Constants.TypeClaimsTokenServiceDesk, user.SessionId), new Claim(Constants.TypeClaimsIdUser, user.UserId.ToString()) }, Constants.BasicAuthentication); ClaimsPrincipal principal = new ClaimsPrincipal(identity); ticket = new AuthenticationTicket(principal, Scheme.Name); } catch (Exception ex) { Response.HttpContext.Features.Get <IHttpResponseFeature>().ReasonPhrase = ex.Message; Response.StatusCode = 401; return(AuthenticateResult.Fail(ex.Message)); } return(AuthenticateResult.Success(ticket)); }
/// <summary> /// Establece la configuración para autenticar al usuario /// </summary> /// <param name="model">parámetros de autenticación</param> /// <param name="urlServiceDesk">endpoint de Service Desk</param> /// <returns>token</returns> public async Task <AnswerAuthentication> AuthenticateV8(InputAuthenticateDto model) { List <AnswerGeneralV8Api> listProperty = new List <AnswerGeneralV8Api>(); listProperty.FillProperties(model, true); string endpoint = ConfigurationService.UrlServiceDesk + ConfigurationService.UrlLogin; List <AnswerGeneralV8Api> answerApi = await ConectionService.PostAsync <List <AnswerGeneralV8Api> >(string.Empty, endpoint, listProperty); return(answerApi.ConvertModel(new AnswerAuthentication())); }