コード例 #1
0
        /// <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));
        }
コード例 #2
0
        /// <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()));
        }