Exemplo n.º 1
0
        /// <summary>
        /// Generate claims identity for token
        /// </summary>
        /// <param name="context">Context of request</param>
        /// <param name="user">Object user</param>
        /// <returns>Identity generated</returns>
        private Task GenerateJwt(OAuthGrantResourceOwnerCredentialsContext context, User user)
        {
            HttpResponseMessage responseMessage;
            IUser blUser = new BlUser();

            user.NumberOfAttemps = 0;
            blUser.UpdateUserAttemps(user, out responseMessage);
            blUser.SaveAuditLoginUser(user.Id);
            var identity = new ClaimsIdentity("JWT");

            identity.AddClaim(new Claim(ClaimTypes.Name, context.UserName));
            identity.AddClaim(new Claim("UserName", context.UserName));
            identity.AddClaim(new Claim("Id", user.Id.ToString()));

            var props = new AuthenticationProperties(new Dictionary <string, string>
            {
                {
                    "audience", (context.ClientId == null) ? string.Empty : context.ClientId
                },
                {
                    "userName", context.UserName
                },
            });

            var ticket = new AuthenticationTicket(identity, props);

            context.Validated(ticket);
            return(Task.FromResult <object>(context));
        }
Exemplo n.º 2
0
        /// <summary>
        /// Update number attemps of login of a user
        /// </summary>
        /// <param name="context">Context of request</param>
        /// <param name="userLogin">Object user</param>
        /// <returns>Context message error</returns>
        private Task UpdateNumberAttempsUser(OAuthGrantResourceOwnerCredentialsContext context, User userLogin)
        {
            HttpResponseMessage responseMessage;
            IUser blUser = new BlUser();

            userLogin.NumberOfAttemps += 1;
            blUser.UpdateUserAttemps(userLogin, out responseMessage);

            context.SetError("ContraseñaIncorrecta", Resources.Message_es.IncorrectPassword);
            context.Response.Headers.Add(Constants.OwinChallengeFlag, new[] { ((int)HttpStatusCode.Unauthorized).ToString() }); //Little trick to get this to throw 401, refer to AuthenticationMiddleware for more
            return(Task.FromResult <object>(context));
        }