如何在.Net中解析SAML断言请求
||
我正在尝试在.Net中实现SAML SSO解决方案,但是在解析断言时遇到了问题。
我有一个示例断言(看起来像“ 0”数据作为文本)和相应的“ 1”文件。
我想从“ 1”加载密钥,并将断言解密为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内容。
我认为这意味着我缺少解密该断言的步骤-将“ 0”作为文本转换为SAML格式的XML文档。
有人知道如何添加此步骤吗?我还有其他东西吗?
没有找到相关结果
已邀请:
1 个回复
孤捷侩
身份验证仍然无法进行,但是我现在拥有有效的XML,所以这是一个不同的问题。