アプリケーション IdP から有効な SAML 2 トークンを取得しました。
以下のように WIF コードを使用して読み取ろうとすると、次のエラーが発生します。
BinarySecretSecurityToken の 'urn:oasis:names:tc:SAML:2.0:protocol' 名前空間で、'' ValueType を持つ 'Response' 要素からトークンを読み取ることができません。この要素が有効であると予想される場合は、指定された名前、名前空間、および値の型を持つトークンを消費するようにセキュリティが構成されていることを確認してください。
ここに私が使用しているコードと、失敗した場所を示すコメントがあります
string certPath = @"G:\Projects\myAPp\SAMLHandlingTests\bin\Debug\SSO.cer";
X509Certificate2 cert = new X509Certificate2(certPath);
//X509Certificate2 cert = new X509Certificate2(certPath, "LetMeIn!");
// Open the SAML
string samlPath = @"G:\Projects\myAPp\SAMLHandlingTests\bin\Debug\SAML.xml";
string samlRaw = File.OpenText(samlPath).ReadToEnd();
XmlReader rdr = XmlReader.Create(samlPath);
List<System.IdentityModel.Tokens.SecurityToken> tokens = new List<System.IdentityModel.Tokens.SecurityToken>();
var token = new X509SecurityToken(cert);
tokens.Add(token);
SecurityTokenResolver resolver =
SecurityTokenResolver.CreateDefaultSecurityTokenResolver(
new System.Collections.ObjectModel.ReadOnlyCollection<SecurityToken>(tokens), true);
//Fails on next line!
SecurityToken securityToken = System.ServiceModel.Security.WSSecurityTokenSerializer.DefaultInstance.ReadToken(rdr, resolver);
SamlSecurityToken deserializedSaml = securityToken as SamlSecurityToken;
問題は XML 名前空間の例外ですが、「名前、名前空間、および値の型が指定されたトークンを使用するようにセキュリティが構成されていることを確認する」方法がわかりません。
誰かが私を正しい方向に向けることができますか?