2016-04-25 6 views
0

Я попробовал несколько способов разбора SAMLC# SAML Синтаксических в XML, чтобы получить значение аудитории

 string raw = txt.Text; 
     if (raw.Contains('%')) 
     { 
      raw = HttpUtility.UrlDecode(raw); 
     } 
     byte[] xmlMessageBytes = Convert.FromBase64String(raw); 
     XmlDocument document = new XmlDocument { PreserveWhitespace = true }; 
     document.LoadXml(Encoding.UTF8.GetString(xmlMessageBytes)); 

Но я получаю случайные символы в ответ. Но когда я использую Firefox addon SAMLTracer, он отлично работает.

Любая помощь очень ценится.

+0

Если делать это для удовольствия/чтобы узнать, я рекомендую вам не создать свою собственную реализацию SAML2. Очень много работы и легко получить критические механизмы безопасности не так (уязвимости обложения XML-сигнатуры распространены в реализациях SAML). –

ответ

0

Передано ли сообщение SAML как параметр строки запроса? В этом случае он использует привязку переадресации Http, а содержимое сообщения деформируется.

Для справки, это редирект декодирования из Kentor.AuthServices библиотеки:

using (var compressed = new MemoryStream(payload)) 
{ 
    using (var decompressedStream = new DeflateStream(compressed, CompressionMode.Decompress, true)) 
    { 
    using (var deCompressed = new MemoryStream()) 
    { 
     decompressedStream.CopyTo(deCompressed); 
     var xml = new XmlDocument() 
     { 
     PreserveWhitespace = true 
     }; 

     xml.LoadXml(Encoding.UTF8.GetString(deCompressed.GetBuffer())); 

     // Simplified, the real code does some more work. 
     return xml; 
    } 
    } 
} 
+0

Огромное вам спасибо, есть ли способ получить эту работу в версии 2.0 по некоторым причинам, она не поддерживается в 4.0 framework – learner999

+0

Имея проблемы с CopyTo в 2.0 – learner999