Пример #1
0
        public string Post([FromBody] VerifyTokenInputParams inputParams)
        {
            try
            {
                /*
                 *  JObject rval = new JObject();
                 *  rval["IsAuthenticated"] = false;
                 *  try
                 *  {
                 *
                 *      JObject userObj = new JObject();
                 *      userObj["FirstName"] = "Test";
                 *
                 *      rval.Add("User", userObj);
                 *
                 *      return rval.ToString();
                 *  }
                 *  catch (Exception ex)
                 *  {
                 *      rval["Error"] = ex.ToString();
                 *  }
                 *  return rval.ToString();
                 */

                SSOLookup   worker = new SSOLookup(_configuration);
                SSOResponse resp   = worker.VerifySSOSession(inputParams);

                if (inputParams.search_ldap_dir && resp.has_valid_session && !String.IsNullOrEmpty(resp.User.login_id))
                {
                    User user = resp.User;
                    worker.SearchUser(inputParams.GetEnvironment(), ref user);
                }

                //return JsonConvert.SerializeObject(resp, Formatting.Indented);
                string rval = JsonConvert.SerializeObject(resp, Formatting.Indented);

                return(rval);
            }
            catch (Exception ex)
            {
                return("{\"error_message\" : \"{0}\"" + ex.Message + "\"}");
            }
        }
Пример #2
0
        public SSOResponse VerifyToken([FromBody] VerifyTokenInputParams inputParams)
        {
            try
            {
                /*
                 *  JObject rval = new JObject();
                 *  rval["IsAuthenticated"] = false;
                 *  try
                 *  {
                 *
                 *      JObject userObj = new JObject();
                 *      userObj["FirstName"] = "Test";
                 *
                 *      rval.Add("User", userObj);
                 *
                 *      return rval.ToString();
                 *  }
                 *  catch (Exception ex)
                 *  {
                 *      rval["Error"] = ex.ToString();
                 *  }
                 *  return rval.ToString();
                 */

                SSOLookup   worker = new SSOLookup(_configuration);
                SSOResponse resp   = worker.VerifySSOSession(inputParams);

                if (inputParams.search_ldap_dir)
                {
                    User user = resp.User;
                    worker.SearchUser(inputParams.GetEnvironment(), ref user);
                }

                return(resp);
            }
            catch (Exception ex)
            {
                return(new SSOResponse()
                {
                    error_message = "Exception in VerifyToken(), details: " + ex.Message
                });
            }
        }
Пример #3
0
        public SSOResponse VerifySSOSession(VerifyTokenInputParams inputParams)
        {
            SSOResponse rval = new SSOResponse();

            try
            {
                if (String.IsNullOrEmpty(inputParams.sso_token))
                {
                    throw new Exception("Missing valid SSO Token.");
                }

                string             baseURL = "";
                Models.Environment enviro  = inputParams.GetEnvironment();
                switch (enviro)
                {
                case Models.Environment.Dev:
                    baseURL = GetStringValue("S_SSO_URL_DEV");
                    break;

                case Models.Environment.QA:
                    baseURL = GetStringValue("S_SSO_URL_QA");
                    break;

                default:
                    baseURL = GetStringValue("S_SSO_URL_PROD");
                    break;
                }

                // required format on call
                string ssoURL = String.Format("{0}/?session_id={1}&session_key={2}&session_appname={3}",
                                              baseURL, inputParams.sso_token, GetStringValue("S_SSO_SessionKey"), GetStringValue("S_SSO_SessionAppName"));
                Uri ssoUri = new Uri(ssoURL);

                HttpWebRequest  req  = (HttpWebRequest)HttpWebRequest.Create(ssoUri);
                HttpWebResponse resp = (HttpWebResponse)req.GetResponse();

                Stream       recStream = resp.GetResponseStream();
                Encoding     encode    = Encoding.GetEncoding("utf-8");
                StreamReader reader    = new StreamReader(recStream, encode);
                string       sResponse = reader.ReadToEnd();

                // we have a response now, loop through the key value pairs
                string[] vals = sResponse.Split(new char[2] {
                    ':', '='
                });

                int count = 0;
                while ((count + 1) < vals.Count())
                {
                    switch (vals[count].ToUpper())
                    {
                    case SESSION_STATE:
                        rval.session_state     = vals[count + 1];
                        rval.has_valid_session = string.Compare(rval.session_state, "valid", true) == 0;
                        break;

                    case SESSION_TIMELEFT:
                        try
                        {
                            string[] ts = vals[count + 1].Split('.');
                            if (ts.Length > 5)
                            {
                                rval.session_time_left = new DateTime(Int32.Parse(ts[0]), Int32.Parse(ts[1]), Int32.Parse(ts[2]),
                                                                      Int32.Parse(ts[3]), Int32.Parse(ts[4]), Int32.Parse(ts[5]));
                            }
                        }
                        catch (Exception) { }
                        break;

                    case SESSION_AUTHLEVEL:
                        rval.session_level = vals[count + 1];
                        break;

                    case USER_ID:
                        rval.User.login_id = vals[count + 1];
                        break;

                    case USER_TYPE:
                        rval.User.sso_user_type = vals[count + 1];
                        break;

                    case USER_FIRSTNAME:
                        rval.User.first_name = vals[count + 1];
                        break;

                    case USER_LASTNAME:
                        rval.User.last_name = vals[count + 1];
                        break;

                    case USER_EMAIL:
                        rval.User.email = vals[count + 1];
                        break;

                    case ERROR_CODE:
                        rval.error_code = vals[count + 1];
                        break;

                    default:
                        rval.User.attributes.Add(vals[count], vals[count + 1]);
                        break;
                    }
                    count += 2;
                }
            }
            catch (Exception ex)
            {
                rval.error_message = ex.Message;
            }
            return(rval);
        }