Esempio n. 1
0
        public string GetSessionKey(LoginModel loginModel)
        {
            //Generate IV/key/hash
            AesCryptoServiceProvider cryptoProvider = new AesCryptoServiceProvider();
            cryptoProvider.KeySize = 256;
            cryptoProvider.GenerateIV();
            string IV = Convert.ToBase64String(cryptoProvider.IV);
            byte[] data = Encoding.UTF8.GetBytes(Newtonsoft.Json.JsonConvert.SerializeObject(loginModel));
            byte[] key = Convert.FromBase64String(encryptionKey);
            string hash = Convert.ToBase64String(new HMACSHA512(key).ComputeHash(data));
            string encryptedData = Encrypt(key, Convert.FromBase64String(IV), Newtonsoft.Json.JsonConvert.SerializeObject(loginModel));

            //Send payload
            var req = new WebClient();
            req.BaseAddress = endpoint + "/Remote/Account/GetSessionKey";
            req.Headers.Clear();
            req.Headers.Add("Accept", "application/json");
            req.Headers.Add(Headers.Email, loginModel.Identity.Email);
            req.Headers.Add(Headers.User, loginModel.Identity.UserId);
            req.Headers.Add(Headers.SingleSignOn, loginModel.Identity.SingleSignOnId);
            req.Headers.Add(Headers.Iv, IV);
            req.Headers.Add(Headers.CompanyAutomation, automationId);
            req.Headers.Add(Headers.Hash, hash);
            req.Headers.Add("Accept-Encoding", "gzip,deflate");
            try
            {
                var request = req.UploadData(endpoint + "/Remote/Account/GetSessionKey", "POST", Encoding.UTF8.GetBytes(encryptedData));
                return Encoding.UTF8.GetString(request);
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }
Esempio n. 2
0
        public string GetSessionKey(LoginModel loginModel)
        {
            //Generate IV/key/hash
            AesCryptoServiceProvider cryptoProvider = new AesCryptoServiceProvider();
            cryptoProvider.KeySize = 256;
            cryptoProvider.GenerateIV();
            string IV = Convert.ToBase64String(cryptoProvider.IV);
            byte[] data = Encoding.UTF8.GetBytes(Newtonsoft.Json.JsonConvert.SerializeObject(loginModel));
            byte[] key = Convert.FromBase64String(encryptionKey);
            string hash = Convert.ToBase64String(new HMACSHA512(key).ComputeHash(data));
            string encryptedData = Encrypt(key, Convert.FromBase64String(IV), Newtonsoft.Json.JsonConvert.SerializeObject(loginModel));

            //Send payload
            var req = new HttpClient();
            req.BaseAddress = new Uri(endpoint + "/Remote/Account/GetSessionKey");
            req.DefaultRequestHeaders.Accept.Clear();
            req.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
            req.DefaultRequestHeaders.Add(Headers.Email, loginModel.Identity.Email);
            req.DefaultRequestHeaders.Add(Headers.User, loginModel.Identity.UserId);
            req.DefaultRequestHeaders.Add(Headers.SingleSignOn, loginModel.Identity.SingleSignOnId);
            req.DefaultRequestHeaders.Add(Headers.Iv, IV);
            req.DefaultRequestHeaders.Add(Headers.CompanyAutomation, automationId);
            req.DefaultRequestHeaders.Add(Headers.Hash, hash);
            //req.DefaultRequestHeaders.Add("Accept-Encoding", "gzip,deflate");
            var request = req.PostAsJsonAsync(endpoint + "/Remote/Account/GetSessionKey", encryptedData);
            if (request.Result.IsSuccessStatusCode)
            {
                return request.Result.Content.ReadAsStringAsync().Result.Replace("\"", "");
            }
            else
                throw new Exception(request.Result.Content.ReadAsStringAsync().Result);
        }