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; }
public LoginInfo(MobileLoginConfiguration configuration, CSRFToken csrfToken, HttpOnlyLoginCookieValue httpCookie, UserAccessibleLoginCookieValue userCookie) { this.configuration = configuration; this.csrfToken = csrfToken; this.httpCookie = httpCookie; this.userCookie = userCookie; dirty = false; }
public LoginInfo(MobileLoginConfiguration configuration) { this.configuration = configuration; csrfToken = null; httpCookie = new HttpOnlyLoginCookieValue(); userCookie = new UserAccessibleLoginCookieValue(); mobileLoginInfo = new MobileLoginInfo { TenantId = configuration.DefaultTenantId }; dirty = false; }
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); }
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); }