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