private static SPSSODescriptorConfiguration BuildSPSSODescriptorConfiguration(SPDescriptorSettings sPDescriptor, OrganisationConfiguration organisation) { var sPSSODescriptorConfiguration = new SPSSODescriptorConfiguration { WantAssertionsSigned = sPDescriptor.WantAssertionsSigned, ValidUntil = sPDescriptor.ValidUntil, Organisation = organisation, AuthenticationRequestsSigned = sPDescriptor.RequestSigned, CacheDuration = MetadataHelper.TimeSpanFromDatapartEntry(sPDescriptor.CacheDuration), RoleDescriptorType = typeof(ServiceProviderSingleSignOnDescriptor), ErrorUrl = new Uri(sPDescriptor.ErrorUrl) }; //sort this out missing in the models sPSSODescriptorConfiguration.NameIdentifierFormats.Add(new Uri("urn:oasis:names:tc:SAML:2.0:nameid-format:transient")); sPSSODescriptorConfiguration.NameIdentifierFormats.Add(new Uri("urn:oasis:names:tc:SAML:2.0:nameid-format:persistent")); //logout services sPDescriptor.LogoutServices.Aggregate(sPSSODescriptorConfiguration.SingleLogoutServices, (t, next) => { t.Add(new EndPointConfiguration { Binding = new Uri(next.Binding.Uri), Location = new Uri(next.Url) }); return(t); }); //supported protocols sPDescriptor.Protocols.Aggregate(sPSSODescriptorConfiguration.ProtocolSupported, (t, next) => { t.Add(new Uri(next.Uri)); return(t); }); //key descriptors sPDescriptor.Certificates.Aggregate(sPSSODescriptorConfiguration.KeyDescriptors, (t, next) => { var keyDescriptorConfiguration = MetadataHelper.BuildKeyDescriptorConfiguration(next); t.Add(keyDescriptorConfiguration); return(t); }); //assertinon service sPDescriptor.AssertionServices.Aggregate(sPSSODescriptorConfiguration.AssertionConsumerServices, (t, next) => { var indexedEndPointConfiguration = new IndexedEndPointConfiguration { Index = next.Index, IsDefault = next.IsDefault, Binding = new Uri(next.Binding.Uri), Location = new Uri(next.Url) }; t.Add(indexedEndPointConfiguration); return(t); }); return(sPSSODescriptorConfiguration); }
public static EntityDesriptorConfiguration BuildEntityDesriptorConfiguration(EntityDescriptorSettings entityDescriptorSettings) { var federationId = String.Format("{0}_{1}", "eca", Guid.NewGuid()); var organisation = entityDescriptorSettings.IncludeOrganisationInfo ? MetadataHelper.BuidOrganisationConfiguration(entityDescriptorSettings.Organisation) : (OrganisationConfiguration)null; var entityDescriptorConfiguration = new EntityDesriptorConfiguration { CacheDuration = MetadataHelper.TimeSpanFromDatapartEntry(entityDescriptorSettings.CacheDuration), EntityId = entityDescriptorSettings.EntityId, Id = entityDescriptorSettings.FederationId, ValidUntil = entityDescriptorSettings.ValidUntil, Organisation = organisation, }; var spDescriptor = MetadataHelper.BuildSPSSODescriptorConfiguration(entityDescriptorSettings.RoleDescriptors.OfType <SPDescriptorSettings>().Single(), organisation); entityDescriptorConfiguration.RoleDescriptors.Add(spDescriptor); return(entityDescriptorConfiguration); }