/// <summary> /// Obtains the next reader service during the discovery process /// being managed by a session variable tracking cirlce of trusts /// currently being checked. /// </summary> /// <param name="serviceProviderUtility">ServiceProviderUtility containing circle-of-trust information.</param> /// <param name="context">HttpContext containing session, request, and response objects.</param> /// <returns> /// Returns the URL found in the currently checked circle-of-trust file if specified, null otherwise. /// </returns> public static Uri GetReaderServiceUrl(ServiceProviderUtility serviceProviderUtility, HttpContext context) { HttpSessionState session = context.Session; Uri readerSvcUrl = null; ArrayList cotList = (ArrayList)session[IdentityProviderDiscoveryUtils.CommonDomainDiscoverySessionAttribute]; if (cotList == null) { // Obtain the list of currently tracked circle-of-trusts with // reader service if not already known. cotList = new ArrayList(); foreach (string cotName in serviceProviderUtility.CircleOfTrusts.Keys) { CircleOfTrust cot = (CircleOfTrust)serviceProviderUtility.CircleOfTrusts[cotName]; if (cot.ReaderServiceUrl != null) { cotList.Add(cotName); } } } IEnumerator enumerator = cotList.GetEnumerator(); if (enumerator.MoveNext()) { // Try the first service in the list string cotName = (string)enumerator.Current; cotList.Remove(cotName); session[IdentityProviderDiscoveryUtils.CommonDomainDiscoverySessionAttribute] = cotList; CircleOfTrust cot = (CircleOfTrust)serviceProviderUtility.CircleOfTrusts[cotName]; readerSvcUrl = new Uri(cot.ReaderServiceUrl.AbsoluteUri); } return(readerSvcUrl); }
/// <summary> /// Internal method to load all configuration information for all /// circle of trusts found in the home folder. /// </summary> private void InitializeCircleOfTrusts() { DirectoryInfo dirInfo = new DirectoryInfo(this.homeFolder); FileInfo[] files = dirInfo.GetFiles("fedlet*.cot"); foreach (FileInfo file in files) { CircleOfTrust cot = new CircleOfTrust(file.FullName); string key = cot.Attributes["cot-name"]; this.CircleOfTrusts.Add(key, cot); } if (this.CircleOfTrusts.Count <= 0) { throw new ServiceProviderUtilityException(Resources.ServiceProviderUtiltyCircleOfTrustsNotFound); } }