Как создать URL для выхода из системы Azure Active Directory для единого входа, нужно предложение - PullRequest
0 голосов
/ 17 февраля 2020

Я работаю над проектом единого входа, где я создаю запрос проверки подлинности SAML для входа в систему, и он перенаправляет меня на страницу Microsoft и выполняет проверку подлинности на Azure Active Directory, которая работает нормально, я приложил код подготовки SAML Запрос входа в систему. Теперь я должен подготовить код для выхода из системы в Azure Active Directory, может ли кто-нибудь помочь мне с подготовкой Azure URL для выхода из ACtive каталога аналогично тому, как мы это делали для входа в систему. Какие изменения необходимо внести в запрос URL. Для входа в систему в URL-адресе нам необходимо иметь SAMLRequest в качестве параметра строки запроса, для выхода из системы, как выглядит URL-адрес?

SAML Auth Request LogIN URL (saml end point is the login url which we got)

 public string SSO(string samlEndpoint)
        {
            var queryStringSeparator = samlEndpoint.Contains("?") ? "&" : "?";

        var url = samlEndpoint + queryStringSeparator + "SAMLRequest=" + HttpUtility.UrlEncode(this.GetRequestSSO(AuthRequest.AuthRequestFormat.Base64));

        if (!string.IsNullOrEmpty(relayState))
        {
            url += "&RelayState=" + HttpUtility.UrlEncode(relayState);
        }

        return url;


        }



  public string GetRequestSSO(AuthRequestFormat format)
    {
        using (StringWriter sw = new StringWriter())
        {
            XmlWriterSettings xws = new XmlWriterSettings();
            xws.OmitXmlDeclaration = true;

            using (XmlWriter xw = XmlWriter.Create(sw, xws))
            {
                xw.WriteStartElement("samlp", "AuthnRequest", "urn:oasis:names:tc:SAML:2.0:protocol");
                xw.WriteAttributeString("ID", _id);
                xw.WriteAttributeString("Version", "2.0");
                xw.WriteAttributeString("IssueInstant", _issue_instant);
                xw.WriteAttributeString("ProtocolBinding", "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST");
                xw.WriteAttributeString("AssertionConsumerServiceURL", _assertionConsumerServiceUrl);

                xw.WriteStartElement("saml", "Issuer", "urn:oasis:names:tc:SAML:2.0:assertion");
                xw.WriteString(_issuer);
                xw.WriteEndElement();

                xw.WriteStartElement("samlp", "NameIDPolicy", "urn:oasis:names:tc:SAML:2.0:protocol");
                xw.WriteAttributeString("Format", "urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified");
                xw.WriteAttributeString("AllowCreate", "true");
                xw.WriteEndElement();
                xw.WriteEndElement();
            }

            if (format == AuthRequestFormat.Base64)


            {

                var memoryStream = new MemoryStream();
                var writer = new StreamWriter(new DeflateStream(memoryStream, CompressionMode.Compress, true), new UTF8Encoding(false));
                writer.Write(sw.ToString());
                writer.Close();
                string result = Convert.ToBase64String(memoryStream.GetBuffer(), 0, (int)memoryStream.Length, Base64FormattingOptions.None);
                return result;

            }

            return null;
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...