示例#1
0
        private static bool TryGetAccessToken(string authUrl, string apiKey, CredentialsModel model, out string accessToken)
        {
            var success = false;
            accessToken = null;

            try
            {
                using (var httpClient = new HttpClient())
                {
                    httpClient.DefaultRequestHeaders.Authorization = CreateBasicAuthorizationHeader(model.Username, model.Password);
                    httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
                    httpClient.DefaultRequestHeaders.Add("api-key", apiKey);
                    var result = httpClient.GetAsync(authUrl).Result;

                    if (result.IsSuccessStatusCode)
                    {
                        var content = result.Content.ReadAsStringAsync().Result;
                        dynamic json = JsonConvert.DeserializeObject(content);
                        if (!string.IsNullOrWhiteSpace(json.AccessToken.Value))
                        {
                            accessToken = json.AccessToken;
                            success = true;
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                var baseException = ex.GetBaseException();
            }

            return success;
        }
示例#2
0
 public ActionResult Login(CredentialsModel model)
 {
     if (ModelState.IsValid)
     {
         string accessToken;
         string username;
         if (TryGetAccessToken(INAUTHURL, INAPIKEY, model, out accessToken) && TryGetUserName(INUSERSMEURL, INAPIKEY, accessToken, out username))
         {
             var ticket = new FormsAuthenticationTicket(1, username, DateTime.UtcNow, DateTime.MaxValue, true, accessToken);
             var encryptedTicket = FormsAuthentication.Encrypt(ticket);
             var cookie = new HttpCookie(FormsAuthentication.FormsCookieName, encryptedTicket);
             Response.AppendCookie(cookie);
             return RedirectToRoute("Chat");
         }
         else
         {
             ModelState.AddModelError("Username", "Invalid Credentials");
             return Login();
         }
     }
     else
     {
         return Login();
     }
 }