[java] Apache XML Security 라이브러리를 사용하여 XML 디지털 서명 검증하기

XML 디지털 서명을 검증하기 위해 Apache XML Security 라이브러리를 사용할 수 있습니다. 이 라이브러리는 Java 언어로 작성되었으며 XML 서명 및 암호화를 지원합니다. 아래에서는 Apache XML Security 라이브러리를 사용하여 XML 디지털 서명을 검증하는 방법에 대해 알아보겠습니다.

Apache XML Security 라이브러리 추가하기

먼저 Apache XML Security 라이브러리를 프로젝트에 추가해야 합니다. Maven을 사용하는 경우 pom.xml 파일에 아래 종속성을 추가합니다.

<dependency>
    <groupId>org.apache.santuario</groupId>
    <artifactId>xmlsec</artifactId>
    <version>2.2.3</version>
</dependency>

Gradle을 사용한다면 build.gradle 파일에 아래 종속성을 추가합니다.

implementation 'org.apache.santuario:xmlsec:2.2.3'

의존성을 추가한 후에는 빌드 도구를 통해 라이브러리를 다운로드하고 프로젝트에 추가합니다.

XML 디지털 서명 검증하기

이제 Apache XML Security 라이브러리를 사용하여 XML 디지털 서명을 검증하는 방법을 살펴보겠습니다. 아래는 간단한 예제 코드입니다.

import org.apache.xml.security.signature.XMLSignature;
import org.apache.xml.security.utils.Constants;

public class XmlSignatureVerifier {
    public boolean verifyXmlDigitalSignature(String xmlFilePath, String publicKeyFilePath) {
        try {
            XMLSignature signature = new XMLSignature(DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(new FileInputStream(xmlFilePath)).getDocumentElement(), publicKeyFilePath);
            signature.addResourceResolver(new OfflineResolver());
            signature.addResourceResolver(new ResolverLocalFilesystem());
            signature.addResourceResolver(new ResolverXPointer());
            signature.addResourceResolver(new ResolverDirectHTTP());
            signature.addResourceResolver(new ResolverFragment());
            signature.addResourceResolver(new ResolverXPointer());
            
            signature.addKeyInfo(new LocalFileKeyInfo(publicKeyFilePath));
            signature.addKeyInfo(new KeyInfo(X509Util.getX509Certificate(publicKeyFilePath)));
            signature.addKeyInfo(new KeyInfo(cert));
            
            return signature.checkSignatureValue(signature.getKeyInfo().getPublicKey());
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        }
    }
}

위의 코드는 XML 파일 경로와 공개 키 파일 경로를 전달받아 디지털 서명을 검증하는 메소드입니다. 해당 메소드는 truefalse를 반환하여 서명의 유효성을 나타냅니다.

마무리

이제 Apache XML Security 라이브러리를 사용하여 XML 디지털 서명을 검증하는 방법에 대해 알아보았습니다. XML 디지털 서명을 검증하는 데 사용할 수 있는 다른 방법들도 있지만, 이 라이브러리는 확장성과 안정성 면에서 매우 우수한 선택지입니다.

더 많은 정보를 원하시면 Apache XML Security 웹사이트를 방문하시기 바랍니다.