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();
         }
     }
 }
Esempio n. 2
0
        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;
        }