/// <summary>
        /// Autehnticate given request
        /// </summary>
        public static bool CheckAuthentication(HttpRequest request)
        {
            bool result = false;

            // Get the ASP.NET authentication cookie
            var cookie = request.Cookies[FormsAuthentication.FormsCookieName];

            // Check wether the cookie was found
            if (cookie != null)
            {
                // decrypt the cookie
                var ticket = FormsAuthentication.Decrypt(cookie.Value);
                // if not expired
                if (!ticket.Expired)
                {
                    // if we got anything in the ticket
                    if (!string.IsNullOrEmpty(ticket.Name))
                    {
                        // if valid
                        string keyUser;
                        if (Identities.TryGetValue(ticket.Name, out keyUser))
                        {
                            // create a principal
                            var principal = new CustomPrincipal(keyUser, ticket.Name);

                            // set working principal into the working thread
                            Thread.CurrentPrincipal = principal;

                            // success
                            result = true;
                        }
                    }

                    // if authentication failed
                    if (!result)
                    {
                        // clear the ticket
                        FormsAuthentication.SignOut();
                    }
                }
            }
            return result;
        }
        /// <summary>
        /// Authenticate given request
        /// </summary>
        public static bool Authenticate(string login)
        {
            bool result = false;

            // if we got anything in the ticket
            if (!string.IsNullOrEmpty(login))
            {
                // if valid
                string keyUser;
                if (Identities.TryGetValue(login, out keyUser))
                {
                    // create a principal
                    var principal = new CustomPrincipal(keyUser, login);

                    // set working principal into the working thread
                    Thread.CurrentPrincipal = principal;

                    // set the cookie
                    FormsAuthentication.SetAuthCookie(login, true);

                    // success
                    result = true;
                }
            }

            // if authentication failed
            if (!result)
            {
                // clear the ticket
                FormsAuthentication.SignOut();
            }
            return result;
        }