Windows 2003 서버에서 .Net Framework 3.5와 함께 VS 2008 사용.SSO SAML (sha256 사용)에 대한 서명 된 XML 서명 확인
보안을 위해 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가 제공 서명 알고리즘을 만들 수 없습니다 얻고있다. "
지난 2-3 일 동안 많은 블로그와 기사를 읽었을 때 SignedXml이 sha256을 지원하지 않는다는 사실을 알게되었습니다. 벌금. 그러나 다음은 무엇인가. WIF를 사용하는 곳에서 언급 한 바에 따르면 &도 시도했습니다. this입니다.
또한 RSAPKCS1SignatureDeformatter의 VerifySignature 메서드를 사용하려고합니다. 하지만 통과해야 할 두 가지 매개 변수는 무엇인지 확실하지 않습니다.
X509Certificate2 개체를 지원하므로 암호화 알고리즘이 지원되었다는 인상을 받았습니다. sig.CheckSignature (...) 메서드에는 두 개의 매개 변수 인 X509Certificate2와 bool을 사용하는 오버로드가 있습니다. 당신은 그것을 사용하고 cert를 전달하고 사실입니까? –