Example #1
0
        /// <summary>
        /// Create Token
        /// </summary>
        /// <param name="user"></param>
        /// <returns></returns>
        public Entities.Token Create(User user)
        {
            // expired time
            var exp = 3600;

            var payload = new Payload
            {
                UserInfo = user,
                // Unix time tag
                exp = Convert.ToInt32(
                    (DateTime.Now.AddSeconds(exp) -
                     new DateTime(1970, 1, 1)).TotalSeconds)
            };

            var json   = JsonConvert.SerializeObject(payload);
            var base64 = Convert.ToBase64String(Encoding.UTF8.GetBytes(json));
            var iv     = Guid.NewGuid().ToString().Replace("-", "").Substring(0, 16);

            // Use ASE encrypt payload
            var encrypt = TokenCrypto.AESEncrypt(base64, key.Substring(0, 16), iv);

            // Get signature
            var signature = TokenCrypto.ComputedHMACSHA256(iv + "." + encrypt, key.Substring(0, 64));

            return(new Entities.Token
            {
                // Substring iv + encrypt + signature
                AccessToken = iv + "." + encrypt + "." + signature,
                // Use Guid
                RefreshToken = Guid.NewGuid().ToString().Replace("-", ""),
                Expires = exp
            });
        }