Exemplo n.º 1
0
        public void Login(int userId, int tenantId, string username, bool isPersistent, bool hasSessionStorage)
        {
            var previousLoginId = httpCookie.IsAnonymous ? null : httpCookie.LoginId;

            userCookie = new UserAccessibleLoginCookieValue {
                UserId    = userId,
                Username  = username,
                CSRFToken = SecureTokenGenerator.Instance.GenerateCSRFToken()
            };

            mobileLoginInfo = new MobileLoginInfo {
                UserId       = userId,
                TenantId     = tenantId,
                IsPersistent = isPersistent
            };

            httpCookie = new HttpOnlyLoginCookieValue {
                LoginId = MobileLoginReadWriter.Write(configuration.EncryptKey, mobileLoginInfo)
            };

            if (hasSessionStorage)
            {
                CreateMobileLoginInfo(httpCookie.LoginId, previousLoginId);
            }

            csrfToken = userCookie.CSRFToken;

            dirty = true;
        }
Exemplo n.º 2
0
        public LoginInfo(MobileLoginConfiguration configuration, CSRFToken csrfToken, HttpOnlyLoginCookieValue httpCookie, UserAccessibleLoginCookieValue userCookie)
        {
            this.configuration = configuration;
            this.csrfToken     = csrfToken;
            this.httpCookie    = httpCookie;
            this.userCookie    = userCookie;

            dirty = false;
        }
Exemplo n.º 3
0
        public LoginInfo(MobileLoginConfiguration configuration)
        {
            this.configuration = configuration;
            csrfToken          = null;
            httpCookie         = new HttpOnlyLoginCookieValue();
            userCookie         = new UserAccessibleLoginCookieValue();
            mobileLoginInfo    = new MobileLoginInfo {
                TenantId = configuration.DefaultTenantId
            };

            dirty = false;
        }
Exemplo n.º 4
0
        public void Logout()
        {
            userCookie = new UserAccessibleLoginCookieValue();
            httpCookie = new HttpOnlyLoginCookieValue();

            mobileLoginInfo = new MobileLoginInfo {
                TenantId = configuration.DefaultTenantId
            };

            csrfToken = userCookie.CSRFToken;

            dirty = true;
        }
        public LoginInfo ReadLoginInfoFromRequest()
        {
            var cookies     = HttpContext.Current.Request.Cookies;
            var cookieNames = cookies.AllKeys;

            HttpOnlyLoginCookieValue httpCookieValue = null;

            if (!cookieNames.Contains(cookieNamer.HttpOnlyLoginCookieName))
            {
                OSTrace.Debug("[Request cookies] No http cookie found");
            }
            else
            {
                string cookieValue = cookies.Get(cookieNamer.HttpOnlyLoginCookieName).Value;
                if (!HttpOnlyLoginCookieValue.TryParse(cookieValue, out httpCookieValue))
                {
                    OSTrace.Debug("[Request cookies] Http cookie value: {0}", cookieValue);
                }
            }

            UserAccessibleLoginCookieValue userCookie = null;

            if (!cookieNames.Contains(cookieNamer.UserAccessibleLoginCookieName))
            {
                OSTrace.Debug("[Request cookies] No user cookie found");
            }
            else
            {
                string cookieValue = cookies.Get(cookieNamer.UserAccessibleLoginCookieName).Value;
                if (!UserAccessibleLoginCookieValue.TryParse(cookieValue, out userCookie))
                {
                    OSTrace.Debug("[Request cookies] User cookie value: {0}", cookieValue);
                }
            }

            var csrfHeaderValue = HttpContext.Current.Request.Headers.Get(cookieNamer.CSRFHeaderName);
            var csrfToken       = csrfHeaderValue == null ? null : new CSRFToken(csrfHeaderValue);

            var loginInfo = new LoginInfo(configuration, csrfToken, httpCookieValue, userCookie);

            return(loginInfo);
        }
Exemplo n.º 6
0
        public static bool TryParse(string payload, out UserAccessibleLoginCookieValue value)
        {
            value = null;

            var    userCookie = new UserAccessibleLoginCookieValue();
            var    b          = new CookieValueReader(payload);
            string csrfTokenStr;

            bool ok =
                b.TryGetStringValue("crf", out csrfTokenStr) &&
                b.TryGetIntValue("uid", out userCookie.UserId) &&
                b.TryGetStringValue("unm", out userCookie.Username);

            if (ok)
            {
                userCookie.CSRFToken = new CSRFToken(csrfTokenStr);
                value = userCookie;
            }

            return(ok);
        }