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 + "\"}"); } }
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 }); } }
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); }