5
我试图在.Net中实现SAML SSO解决方案,但解析断言时出现问题。如何解析.Net中的SAML断言请求
我有一个示例断言(看起来像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内容。
我认为这意味着我错过了解密断言的步骤 - 获取byte[]
作为文本转换为SAML格式的XML文档。
任何人都知道如何添加此步骤?我错过了别的吗?
感谢张贴你如何工作。它为我节省了很多时间。 – 2013-09-06 12:38:08