示例#1
0
        private bool AuthenticateRequest()
        {
            string password;
            string token;
            var    user = GetUserCredentials(out password, out token);

            var authResult = _authProvider.AuthenticateUser(user, password, token);

            if (authResult.IsAuthenticated == false)
            {
                _context.Response.StatusCode        = (int)HttpStatusCode.Unauthorized;
                _context.Response.StatusDescription = "THE REQUEST IS UNAUTHENTICATED, PLEASE LOGIN WITH VALID CREDENTILS";
                _context.Response.ContentType       = "text/plain";

                return(false);
            }

            if (authResult.IsAuthenticated && authResult.NewTokenCreated)
            {
                _context.Response.StatusCode        = (int)HttpStatusCode.OK;
                _context.Response.StatusDescription = "LOGIN SUCCEED, TOKEN IS A ATTACHED";
                _context.Response.ContentType       = "text/plain";

                var tokenBytes = Encoding.UTF8.GetBytes(authResult.Token);
                _context.Response.OutputStream.Write(tokenBytes, 0, tokenBytes.Length);

                return(false);
            }

            return(true);
        }
示例#2
0
        private Task <ClaimsIdentity> GetClaimsIdentity(Credentials credentials, out string error)
        {
            AuthenticationResult result = _authenticationProvider.AuthenticateUser(credentials);

            error = result.ErrorMessage;

            return((result.IsSuccess) ? Task.FromResult(new ClaimsIdentity(
                                                            new GenericIdentity(credentials.Username, "Token"),
                                                            new[]
            {
                new Claim(nameof(result.UserProfile.Name), result.UserProfile.Name),
            })) : Task.FromResult <ClaimsIdentity>(null));
        }
示例#3
0
        public ActionResult LoginUser(SignInModel signInModel)
        {
            //Check if the session already exists
            if (HttpContext.User.Identity.IsAuthenticated)
            {
                return(CurrentUmbracoPage());
            }

            //Validate input model
            if (!ValidationFactory.ValidateLoginInput(signInModel).IsValid)
            {
                return(null);
            }

            //Authenticate user from database
            var user = _iAuth.AuthenticateUser(signInModel);

            if (user != null)
            {
                //Set Authentication Cookie
                FormsAuthentication.SetAuthCookie(user.UserGuid, signInModel.RememberMe);
                var cookie = System.Web.HttpContext.Current.Response.Cookies[FormsAuthentication.FormsCookieName];
                if (cookie != null)
                {
                    var ticket = FormsAuthentication.Decrypt(cookie.Value);
                    if (ticket != null && !ticket.Expired)
                    {
                        var roles = (ticket.UserData ?? "").Split(',');
                        System.Web.HttpContext.Current.User = new GenericPrincipal(new FormsIdentity(ticket), roles);
                    }
                }
                //Set current user data to the Session
                SessionUtil.User = user;
            }

            //Log Entry
            return(Json(new { success = true }, JsonRequestBehavior.AllowGet));
        }