/// <summary> /// called when processing a valid request message and then verify state, discovery or enrollment /// </summary> /// <param name="req"></param> public static HttpResponse VerifyRequest(HttpMessage req) { HttpResponse ret = null; if (req == null) { testSite.Assert.Fail("Not receive any request"); } if (!(req is HttpRequest)) { testSite.Assert.Fail("only expect HTTP request"); } HttpRequest r = (HttpRequest)req; switch (r.Method) { case HttpRequest.HttpMethod.PUT: { if (r.RequestUrl.Path.ToLower().StartsWith(Constraints.StoreUrl.ToLower() + "/")) { StoreEntry entry = (StoreEntry)JsonUtility.DeserializeJSON(r.Body, typeof(StoreEntry)); if (addData(entry, true)) { return(createSuccess()); } else { return(createInternalError()); } } } break; case HttpRequest.HttpMethod.GET: { if (r.RequestUrl.Path.ToLower() == Constraints.StoreUrl.ToLower()) { StoreEntry[] array = getExternalEntries().ToArray(); ret = createSuccess(); ret.Body = JsonUtility.SerializeJSON(array); ret.SetHeaderField(System.Net.HttpResponseHeader.ContentLength, ret.Body.Length.ToString()); return(ret); } else if (r.RequestUrl.Path.ToLower() == Constraints.FederationMetadataUrl.ToLower()) { } else if (r.RequestUrl.Path.ToLower() == Constraints.GetSTSConfigurationUrl.ToLower()) { ret = new HttpResponse(System.Net.HttpStatusCode.OK); STSConfiguration conf = createValidStsConfigurationResponse(); ret.Body = JsonUtility.Encode(conf.ToString()); ret.SetHeaderField(System.Net.HttpResponseHeader.ContentLength, ret.Body.Length.ToString()); return(ret); } else if (r.RequestUrl.Path.ToLower() == Constraints.ProxyTrustUrl.ToLower()) { StoreEntry entry = getData(TrustIdentifierRecord); if (entry == null) { return(createNotFound()); } else { ret = new HttpResponse(System.Net.HttpStatusCode.OK); ProxyRelyingPartyTrust pt = new ProxyRelyingPartyTrust(); pt.Identifier = entry.value; ret.Body = pt.ToString(); return(ret); } } else if (r.RequestUrl.Path.ToLower() == Constraints.StoreUrl.ToLower()) { } else if (r.RequestUrl.Path.ToLower() == Constraints.RelyingPartyTrustUrl.ToLower()) { StoreEntry entry = getData(managedAppsRecord); if (entry == null) { return(createNotFound()); } else { ret = createSuccess(); ret.Body = entry.value; ret.SetHeaderField(System.Net.HttpResponseHeader.ContentLength, ret.Body.Length.ToString()); return(ret); } } else if (r.RequestUrl.Path.ToLower().StartsWith(Constraints.StoreUrl.ToLower() + "/")) { StoreEntry entry = getData(r.RequestUrl.Path.ToLower().Substring((Constraints.StoreUrl.ToLower() + "/").Length)); if (entry == null) { return(createNotFound()); } else { ret = createSuccess(); ret.Body = entry.ToString(); ret.SetHeaderField(System.Net.HttpResponseHeader.ContentType, "application/json;charset=UTF-8"); ret.SetHeaderField(System.Net.HttpResponseHeader.ContentLength, ret.Body.Length.ToString()); return(ret); } } } break; case HttpRequest.HttpMethod.POST: { if (r.RequestUrl.Path.ToLower() == Constraints.EstablishTrustUrl.ToLower()) { StoreEntry entry = getData(TrustCertificateRecord); if (entry != null) { testSite.Assert.Fail("Trust already established"); return(createInternalError()); } EstablishTrustRequest dict = (EstablishTrustRequest)JsonUtility.DeserializeJSON(r.Body, typeof(EstablishTrustRequest)); entry = new StoreEntry(); entry.key = TrustCertificateRecord; entry.version = -1; entry.value = dict.SerializedTrustCertificate; if (addData(entry)) { return(createSuccess()); } } else if (r.RequestUrl.Path.ToLower().Contains(Constraints.RelyingPartyTrustUrl.ToLower() + "/")) { return(createSuccess()); } else if (r.RequestUrl.Path.ToLower() == Constraints.ProxyTrustUrl.ToLower()) { StoreEntry entry = getData(TrustIdentifierRecord); if (entry != null) { return(createInternalError()); } ProxyRelyingPartyTrust dict = (ProxyRelyingPartyTrust)JsonUtility.DeserializeJSON(r.Body, typeof(ProxyRelyingPartyTrust)); entry = new StoreEntry(); entry.key = TrustIdentifierRecord; entry.version = -1; entry.value = dict.Identifier; if (addData(entry)) { return(createSuccess()); } } else if (r.RequestUrl.Path.ToLower() == Constraints.StoreUrl.ToLower()) { } else if (r.RequestUrl.Path.ToLower().StartsWith(Constraints.StoreUrl.ToLower() + "/")) { StoreEntry entry = (StoreEntry)JsonUtility.DeserializeJSON(r.Body, typeof(StoreEntry)); if (addData(entry)) { HttpResponse tosend = createSuccess(); // Yuqing: MUST set bellows!!! tosend.SetHeaderField(System.Net.HttpResponseHeader.ContentLength, "0"); tosend.SetHeaderField(System.Net.HttpResponseHeader.ContentType, "text/html;charset=UTF-8"); return(tosend); } else { return(createInternalError()); } } } break; default: testSite.Assert.Fail("Unsupported HTTP method"); break; } //testSite.Assert.IsNotNull(ret, "Request is handled"); return(ret); }
/// <summary> /// Initializes proxy trusts. /// </summary> private void InitializeProxyTrust() { _proxyRelyingPartyTrust = new ProxyRelyingPartyTrust(); _proxyTrustedCertificate = new List <ProxyTrust>(); }
/// <summary> /// Add a proxy identifier. /// </summary> public void AddProxyRelyingPartyTrust(ProxyRelyingPartyTrust proxy) { _proxyRelyingPartyTrust = proxy; NotifyPropertyChanged("ProxyRelyingPartyTrust"); }