XMLDSig에 대해 새로운 점이 있습니다. 내 XML에 서명해야합니다. 내가 속한 프로젝트에서 XSD에 대한 XML의 유효성을 서명 전에 확인하고 서명 후에 확인해야합니다.XSD - xmldsig로 서명 된 XML 유효성 확인
XSD에 대해 너무 많이 알지는 못하지만 여기서는 다른 XSD로 가져 오기가 있습니다. 그리고 그것이 내 문제가 시작되는 곳입니다. 내 XSD 파일은 masive.xsd이며 이것이 시작 부분을 보는 방법입니다. 내 코드를 C#으로
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:ds="http://www.w3.org/2000/09/xmldsig#"
elementFormDefault="qualified">
<xs:import namespace="http://www.w3.org/2000/09/xmldsig#"
schemaLocation="xmldsig-core-schema.xsd"/>
나는 XSD에 대해 XML 유효성을 검사 할 때 발견 된 오류를 보여주기 때문에 작품을, 내가 인터넷에서 발견 된 몇 가지 코드를 사용합니다. 그러나 서명 된 XML의 유효성을 검사하려고 할 때 내 문제가 시작됩니다.
변경하지 않고 클래스를 그대로 사용합니다. 내가 함수 pathSchema와 스키마를 추가 할 때 :
SchemaSet.Add(null, pathSchema); //pathSchema is the path where my xsd file is.
이 오류를 얻을 :
: 내가 옳다 경우 서명 XML을 다음과 같은 몇 가지 태그를 가지고 있기 때문에The 'http://www.w3.org/2000/09/xmldsig#:Signature' element is not declared.
이있다
<ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#" Id="xmldsig-aae8151c-b8db-4525-bfb1-0b3cebdd1dbf">
<ds:SignedInfo>
<ds:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
<ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/>
<ds:Reference URI="#xmldsig-aae8151c-b8db-4525-bfb1-0b3cebdd1dbf-keyinfo">
<ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
<ds:DigestValue>p4U9Np1nKtjWPPwp2mOcIimRjUy+RuQIPr2hVdY5R2E=</ds:DigestValue>
</ds:Reference>
이전에 일부 게시물을 읽었습니다. 수동으로 XSD를 추가 한 사람을 읽었습니다. 그래서 XSD를 다운로드하고 로컬 경로에 투입 한 다음 내 코드에 추가 :
XElement xsdMarkup2 = XElement.Load(@"C:\XMLXSD\xmldsig-core-schema.xsd");
settings.Schemas.Add(null, xsdMarkup2.CreateReader());
그리고 오류 "서명 요소가 선언되지 않았습니다"표시되지 않습니다. 그러나 유효성 검사기는 더 이상 서명 된 XML의 유효성을 검사하지 않습니다. 나는 몇몇 꼬리표를 삭제하고 종류는 말했다 : No error. 그러나 거기에 있었다.