Saml2SecurityToken に変換したい SAML レスポンスがあります。これが私がすることです:
// SAMLResponseString is a base64 encode SAML2 XML string
string SAMLResponse = SamlHelper.DecodeFrom64(SAMLResponseString);
XmlReader reader = new XmlTextReader(new StringReader(SAMLResponse));
var certificate = new X509Certificate2("[path]", "[password]");
List<SecurityToken> tokens = new List<SecurityToken>();
tokens.Add(new X509SecurityToken(certificate));
SecurityTokenResolver outOfBandTokenResolver =
SecurityTokenResolver.CreateDefaultSecurityTokenResolver(new
ReadOnlyCollection<SecurityToken>(tokens), true);
var securityToken = (Saml2SecurityToken) WSSecurityTokenSerializer.DefaultInstance.ReadToken(reader, null);
(WSSecurityTokenSerializer の) 最後の行で、次のエラーが発生します。
Cannot read the token from the 'Response' element with the 'urn:oasis:names:tc:SAML:2.0:protocol' namespace for BinarySecretSecurityToken, with a '' ValueType. If this element is expected to be valid, ensure that security is configured to consume tokens with the name, namespace and value type specified.
私の応答は次で始まります: (< と samlp:Response の間のスペースなし):
< samlp:Response xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol" xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion" Version="2.0">
ここで何がうまくいかないのか誰か知っていますか?