Example #1
0
        public string GetSamlLogoutRequest()
        {
            try
            {
                SAMLLogoutRequest request = new SAMLLogoutRequest();

                request.Destination = ConfigurationSettingsHelper.GetCriticalConfigSetting(CommonConstants.LOGOUT_SEND_TO);
                request.Alias = ConfigurationSettingsHelper.GetCriticalConfigSetting(CommonConstants.CPEPS);
                request.Issuer = ConfigurationSettingsHelper.GetCriticalConfigSetting(CommonConstants.SP_LOGOUT_RETURN_URL);
                request.QAALevel = ConfigurationSettingsHelper.GetCriticalConfigSetting(CommonConstants.QAALEVEL);
                request.Country = ConfigurationSettingsHelper.GetCriticalConfigSetting(CommonConstants.SAMLCOUNTRY);
                request.SpProvidedId = ConfigurationSettingsHelper.GetCriticalConfigSetting(CommonConstants.PROVIDERNAME);
                request.NameID = ConfigurationSettingsHelper.GetCriticalConfigSetting(CommonConstants.SP_ID);
                request.Id = "_" + Guid.NewGuid().ToString();

                SAMLEngine samlEngine = SAMLEngine.Instance;
                samlEngine.Init();
                XmlDocument xml = samlEngine.GenerateLogoutRequest(request);
                string base64String = Convert.ToBase64String(Encoding.UTF8.GetBytes(xml.OuterXml));
                return base64String;
            }
            catch (Exception e)
            {
                _logger.Error(e);
                throw;
            }
        }
Example #2
0
        public XmlDocument GenerateLogoutRequest(SAMLLogoutRequest request)
        {
            try
            {
                XmlDocument xmlRequest = GenerateLogoutRequestMetadata(request);
                xmlRequest.PreserveWhitespace = true;
                SignatureUtils.SignDocument(xmlRequest, request.Id, certificate,
                                            xmlRequest.GetElementsByTagName("Issuer", SAMLConstants.NS_ASSERT).Item(0));

                return(xmlRequest);
            }
            catch (Exception ex)
            {
                throw new SAMLException("EXCEPTION GenerateRequest", ex);
            }
        }
Example #3
0
        private XmlDocument GenerateLogoutRequestMetadata(SAMLLogoutRequest context)
        {
            DateTime          now     = DateTime.UtcNow;
            LogoutRequestType request = new LogoutRequestType();

            request.ID           = context.Id;
            request.Version      = SAMLConstants.SAML_VERSION;
            request.IssueInstant = now;
            request.Destination  = context.Destination;
            request.Consent      = SAMLConstants.CONSENT;
            request.Issuer       = new NameIDType();
            request.Issuer.Value = context.Issuer;
            request.NameID       = new NameIDType();
            request.NameID.Value = ConfigurationSettingsHelper.GetCriticalConfigSetting(CommonConstants.SP_ID);

            XmlDocument doc = new XmlDocument();

            doc.PreserveWhitespace = true;

            // stork extensions
            XmlElement qualityAuthnAssLevel = doc.CreateElement(ConfigurationSettingsHelper.GetCriticalConfigSetting(CommonConstants.NS_QAALEVEL_PREFIX),
                                                                "QualityAuthenticationAssuranceLevel", ConfigurationSettingsHelper.GetCriticalConfigSetting(CommonConstants.NS_QAALEVEL));

            qualityAuthnAssLevel.InnerText = context.QAALevel;
            XmlElement spSectorEl = doc.CreateElement(SAMLConstants.NS_STORK_ASSER_PREFIX,
                                                      "spSector", SAMLConstants.NS_STORK_ASSER);

            spSectorEl.InnerText = ConfigurationSettingsHelper
                                   .GetCriticalConfigIntSetting(CommonConstants.SAMLSECTOR).ToString();
            XmlElement spInstitutionEl = doc.CreateElement(SAMLConstants.NS_STORK_ASSER_PREFIX,
                                                           "spInstitution", SAMLConstants.NS_STORK_ASSER);

            spInstitutionEl.InnerText = ConfigurationSettingsHelper
                                        .GetCriticalConfigSetting(CommonConstants.SAMLINSTITUTION);
            XmlElement spApplicationEl = doc.CreateElement(SAMLConstants.NS_STORK_ASSER_PREFIX,
                                                           "spApplication", SAMLConstants.NS_STORK_ASSER);

            spApplicationEl.InnerText = ConfigurationSettingsHelper
                                        .GetCriticalConfigSetting(CommonConstants.SAMLAPPLICATION);
            XmlElement spCountryEl = doc.CreateElement(SAMLConstants.NS_STORK_ASSER_PREFIX,
                                                       "spCountry", SAMLConstants.NS_STORK_ASSER);

            spCountryEl.InnerText = ConfigurationSettingsHelper
                                    .GetCriticalConfigSetting(CommonConstants.SAMLCOUNTRY);
            XmlElement eIDSectorShareEl = doc.CreateElement(SAMLConstants.NS_STORK_PROT_PREFIX,
                                                            "eIDSectorShare", SAMLConstants.NS_STORK_PROT);

            eIDSectorShareEl.InnerText = ConfigurationSettingsHelper
                                         .GetCriticalConfigBoolSetting("SamlEIDSectorShare").ToString().ToLower();
            XmlElement eIDCrossSectorShareEl = doc.CreateElement(SAMLConstants.NS_STORK_PROT_PREFIX,
                                                                 "eIDCrossSectorShare", SAMLConstants.NS_STORK_PROT);

            eIDCrossSectorShareEl.InnerText = ConfigurationSettingsHelper
                                              .GetCriticalConfigBoolSetting("SamlEIDCrossSectorShare").ToString().ToLower();
            XmlElement eIDCrossBorderShareEl = doc.CreateElement(SAMLConstants.NS_STORK_PROT_PREFIX,
                                                                 "eIDCrossBorderShare", SAMLConstants.NS_STORK_PROT);

            eIDCrossBorderShareEl.InnerText = ConfigurationSettingsHelper
                                              .GetCriticalConfigBoolSetting("SamlEIDCrossBorderShare").ToString().ToLower();

            request.Extensions     = new ExtensionsType();
            request.Extensions.Any = new XmlElement[] { qualityAuthnAssLevel, spSectorEl,
                                                        spInstitutionEl, spApplicationEl, spCountryEl, eIDSectorShareEl,
                                                        eIDCrossSectorShareEl, eIDCrossBorderShareEl };

            MemoryStream stream = new MemoryStream();

            Serialize(request, stream);

            StreamReader reader = new StreamReader(stream);

            stream.Seek(0, SeekOrigin.Begin);
            string        xml       = reader.ReadToEnd();
            XmlTextReader xmlReader = new XmlTextReader(new StringReader(xml));

            return(Deserialize <XmlDocument>(xmlReader));
        }