Как разобрать запрос подтверждения SAML в .Net

Я пытаюсь реализовать решение SAML SSO в .Net, но у меня возникла проблема с анализом утверждения.

У меня есть образец утверждения (выглядит как byte [ ] данные в виде текста) и соответствующий файл .p7b .

Я хочу загрузить ключи из .p7b и расшифровать утверждение в XML-документ.

] Пока мне кажется, что я правильно читаю ключи:

// get the key data
byte[] certificateData = System.IO.File.ReadAllBytes("myKeys.p7b");

// decode the keys
var cms = new SignedCms(SubjectIdentifierType.IssuerAndSerialNumber);
cms.Decode(certificateData);

var samlCertificates = cms.Certificates;

Затем я пытаюсь проанализировать утверждение, у меня возникает проблема:

// we have a keychain of X509Certificate2s, we need a collection of tokens
var certificatesAsTokens =
    from X509Certificate2 cert in samlCertificates
    select new X509SecurityToken(cert) as SecurityToken;

// get a token resolver
var tokens = new ReadOnlyCollection<SecurityToken>(
    certificatesAsTokens.ToList());
var resolver = SecurityTokenResolver.CreateDefaultSecurityTokenResolver(
    tokens, true);

// get the SAML data in an XML reader
var reader = XmlReader.Create(assertionPostStream);

// use the WS Security stuff to parse the reader
var securityToken = WSSecurityTokenSerializer.
    DefaultInstance.ReadToken(reader, resolver) as SamlSecurityToken;

Этот последний оператор выдает исключение, заявляя, что он не может проанализировать содержимое XML.

Я думаю, это означает, что я m отсутствует шаг расшифровки утверждения - получение байта [] в виде текста, преобразованного в XML-документ в формате SAML.

Кто-нибудь знает, как добавить этот шаг? Я что-то упустил?

6
задан Keith 23 May 2011 в 15:37
поделиться