Windows 2008上で.Net Framework 3.5を使用してVS 2008を使用する。SSO SAMLの署名付きXML署名検証(sha256を使用)
セキュリティのためにSAMLを使用してSSOを実装しました。私たちは、クライアントのシステムから生成されたSigned XML SAML Assertuibトークンを検証するサービスプロバイダー側で作業します。 現在、署名アルゴリズムは「rsa-sha1」を使用していましたが、署名アルゴリズムが「rsa-sha256」というファイルを送信する新規顧客がありました。私は(署名アルゴリズムRSA-sha256h付き)この新しい顧客のために同じコードをしようとすると、
public static string VerifySignature()
{
if (m_xmlDoc == null)
return "Could not load XMLDocument ";
try
{
XmlNamespaceManager nsm = new XmlNamespaceManager(new NameTable());
nsm.AddNamespace("dsig", SignedXml.XmlDsigNamespaceUrl);
XmlElement sigElt = (XmlElement)m_xmlDoc.SelectSingleNode(
"//dsig:Signature", nsm);
// Load the signature for verification
SignedXml sig = new SignedXml(m_xmlDoc);
sig.LoadXml(sigElt);
if (!sig.CheckSignature())
return "Invalid Signature";
}
catch (Exception ex)
{
return ex.Message;
}
return string.Empty;
}
さて、 - これが動作していないと私はエラー「SignatureDescriptionが供給署名アルゴリズムのために作成することができませんでした取得しています。 "
私はSignedXmlがsha256をサポートしていないことを知りました。ファイン。しかし、次に何が。 WIFを使用しているところでは、&も試しました。thisを試しました。
また、RSAPKCS1SignatureDeformatterのVerifySignatureメソッドを使用しようとしています。しかし、2つのパラメータがどのように渡されるのかは分かりません。
X509Certificate2オブジェクトをサポートしているため、暗号化アルゴリズムがサポートされていたという印象を受けました。 sig.CheckSignature(...)メソッドには、X509Certificate2とboolの2つのパラメータをとるオーバーロードがあります。あなたはそれを使用しようとし、証明書を渡して、本当ですか? –