public static byte[] Serialize(AuthenticationTicket ticket) { using (MemoryStream memoryStream = new MemoryStream()) { using (SerializingBinaryWriter serializingBinaryWriter = new SerializingBinaryWriter((Stream)memoryStream)) { var userBinary = ticket.UserData.BinarySerialize(); //var binaryString = CryptoUtils.BinaryToHex(userBinary); serializingBinaryWriter.Write((byte)1); serializingBinaryWriter.Write((byte)ticket.Version); serializingBinaryWriter.Write(ticket.IssueDateUtc.Ticks); serializingBinaryWriter.Write((byte)254); serializingBinaryWriter.Write(ticket.ExpirationUtc.Ticks); serializingBinaryWriter.WriteBinaryString(ticket.Name); serializingBinaryWriter.Write((int)userBinary.Length); serializingBinaryWriter.Write(userBinary); serializingBinaryWriter.Write(byte.MaxValue); return memoryStream.ToArray(); } } }
private static HttpCookie GetAuthCookie(string userName, int timeout, User user) { if (userName == null) userName = string.Empty; var cookiePath = HttpContext.Current.Request.ApplicationPath; if (!cookiePath.EndsWith("/")) cookiePath = cookiePath + "/"; var ticket = new AuthenticationTicket(userName, timeout, user); string encrypted = EncryptionUtils.Encrypt(Convert.ToBase64String(AppAuthenticationTicketSerializer.Serialize(ticket))); HttpCookie httpCookie = new HttpCookie(CookieName, encrypted); httpCookie.HttpOnly = true; httpCookie.Path = cookiePath; httpCookie.Secure = HttpContext.Current.Request.IsSecureConnection; httpCookie.Expires = ticket.ExpirationUtc.ToLocalTime(); return httpCookie; }