public IActionResult Index() { if (Request.Method == "POST") { String referenceId = Request.Form[SpConstants.REF]; HttpResponseMessage response = Utils.PickupUtils.pickUpAttributes(_configuration, referenceId); String responseBody = response.Content.ReadAsStringAsync().Result; dynamic responseBodyJson = JsonConvert.DeserializeObject <dynamic>(responseBody); ViewData["resumePath"] = responseBodyJson[SpConstants.RESUME_PATH]; ViewData["REF"] = referenceId; ViewData["responseBody"] = responseBodyJson; ViewData["pickupEndpoint"] = SpConstants.PICKUP_ENDPOINT; ViewData["configureUrl"] = UrlUtils.configureUrl(Request); ViewData["ssoUrl"] = UrlUtils.ssoUrl(_configuration.GetValue <string>(SpConstants.ADAPTER_CONFIG_SECTION + ":" + SpConstants.BASE_PF_URL), _configuration.GetValue <string>(SpConstants.ADAPTER_CONFIG_SECTION + ":" + SpConstants.PARTNER_ENTITY_ID)); ViewData["redirectUrl"] = UrlUtils.resumeLogoutUrl(_configuration.GetValue <string>(SpConstants.ADAPTER_CONFIG_SECTION + ":" + SpConstants.BASE_PF_URL), (string)responseBodyJson[SpConstants.RESUME_PATH], referenceId); ViewData["httpStatus"] = ReferenceIdAdapterUtil.httpStatus(response.StatusCode); ViewData["rawRequest"] = ReferenceIdAdapterUtil.pickupRequest(_configuration, referenceId); ViewData["rawResponse"] = ReferenceIdAdapterUtil.sessionResponse(response.Headers, responseBodyJson); ViewData["showData"] = true; return(View()); } else { ViewData["configureUrl"] = UrlUtils.configureUrl(Request); ViewData["ssoUrl"] = UrlUtils.ssoUrl(_configuration.GetValue <string>(SpConstants.ADAPTER_CONFIG_SECTION + ":" + SpConstants.BASE_PF_URL), _configuration.GetValue <string>(SpConstants.ADAPTER_CONFIG_SECTION + ":" + SpConstants.PARTNER_ENTITY_ID)); return(View("~/View/Error/Index.cshtml")); } }
public IActionResult Index(Microsoft.AspNetCore.Http.HttpRequest request, JObject userAttributes) { if (request != null) { try { userAttributes.Add(IdpConstants.SUBJECT, new Newtonsoft.Json.Linq.JValue(request.Form[IdpConstants.USERNAME])); userAttributes.Add(IdpConstants.AUTH_INST, new Newtonsoft.Json.Linq.JValue(DateTime.UtcNow)); } catch (ArgumentException) { userAttributes[IdpConstants.SUBJECT] = new Newtonsoft.Json.Linq.JValue(request.Form[IdpConstants.USERNAME]); userAttributes[IdpConstants.AUTH_INST] = new Newtonsoft.Json.Linq.JValue(DateTime.UtcNow); } HttpResponseMessage response = null; using (HttpClientHandler httpClientHandler = new HttpClientHandler()) { // For simplicity, trust any certificate. Do not use in production. httpClientHandler.ServerCertificateCustomValidationCallback = (message, cert, chain, errors) => { return(true); }; using (HttpClient client = new HttpClient(httpClientHandler)) { try { string authenticationString = _configuration.GetValue <string>(IdpConstants.ADAPTER_CONFIG_SECTION + ":" + IdpConstants.ADAPTER_USERNAME) + ":" + _configuration.GetValue <string>(IdpConstants.ADAPTER_CONFIG_SECTION + ":" + IdpConstants.ADAPTER_PASSWORD); string base64EncodedAuthenticationString = Convert.ToBase64String(System.Text.ASCIIEncoding.UTF8.GetBytes(authenticationString)); client.DefaultRequestHeaders.Add("Authorization", "Basic " + base64EncodedAuthenticationString); client.DefaultRequestHeaders.Add(IdpConstants.PING_ADAPTER_HEADER, _configuration.GetValue <string>(IdpConstants.ADAPTER_CONFIG_SECTION + ":" + IdpConstants.ADAPTER_ID)); client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); StringContent content = new StringContent(Convert.ToString(userAttributes), Encoding.UTF8, "application/json"); // Drop the attributes into PingFederate response = client.PostAsync(UrlUtils.dropoffUrl(_configuration.GetValue <string>(IdpConstants.ADAPTER_CONFIG_SECTION + ":" + IdpConstants.BASE_PF_URL)), content).Result; response.EnsureSuccessStatusCode(); } catch (HttpRequestException e) { // proper logging here is omitted for simplicity Console.WriteLine("\nException Caught!"); Console.WriteLine("Message :{0} ", e.Message); } } } String responseBody = response.Content.ReadAsStringAsync().Result; dynamic responseBodyJson = JsonConvert.DeserializeObject <dynamic>(responseBody); ViewData["resumePath"] = request.Form[IdpConstants.RESUME_PATH]; ViewData["resumeUrl"] = UrlUtils.resumeUrl(request); ViewData["REF"] = responseBodyJson[IdpConstants.REF]; ViewData["responseBody"] = responseBodyJson; ViewData["dropoffEndpoint"] = IdpConstants.DROPOFF_ENDPOINT; ViewData["configureUrl"] = UrlUtils.configureUrl(request); ViewData["httpStatus"] = ReferenceIdAdapterUtil.httpStatus(response.StatusCode); ViewData["rawRequest"] = ReferenceIdAdapterUtil.dropoffPost(_configuration, Convert.ToString(userAttributes)); ViewData["rawResponse"] = ReferenceIdAdapterUtil.sessionResponse(response.Headers, responseBodyJson); ViewData["showData"] = true; ViewData["userAttributes"] = userAttributes; ViewData["ssoUrl"] = UrlUtils.ssoUrl(_configuration.GetValue <string>(IdpConstants.ADAPTER_CONFIG_SECTION + ":" + IdpConstants.BASE_PF_URL), _configuration.GetValue <string>(IdpConstants.ADAPTER_CONFIG_SECTION + ":" + IdpConstants.PARTNER_ENTITY_ID)); return(View()); } else { ViewData["configureUrl"] = UrlUtils.configureUrl(request); ViewData["ssoUrl"] = UrlUtils.ssoUrl(_configuration.GetValue <string>(IdpConstants.ADAPTER_CONFIG_SECTION + ":" + IdpConstants.BASE_PF_URL), _configuration.GetValue <string>(IdpConstants.ADAPTER_CONFIG_SECTION + ":" + IdpConstants.PARTNER_ENTITY_ID)); return(View("~/Views/Error/Index.cshtml")); } }