[java] Apache XML Security 라이브러리의 사용 사례

Apache XML Security는 XML 문서에 대한 서명 및 암호화를 지원하는 자바 라이브러리입니다. 이 라이브러리를 사용하면 XML 데이터를 안전하게 교환하고 검증할 수 있습니다. 이 블로그 포스트에서는 Apache XML Security를 사용하여 XML 문서를 서명하고 검증하는 방법에 대해 살펴보겠습니다.

Apache XML Security 라이브러리의 의존성 추가

먼저 Apache XML Security 라이브러리의 의존성을 프로젝트에 추가해야 합니다. Maven을 사용한다면 아래와 같이 의존성을 추가할 수 있습니다.

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

Gradle을 사용한다면 다음과 같이 의존성을 추가할 수 있습니다.

implementation 'org.apache.santuario:xmlsec:{version}'

XML 문서 서명하기

이제 Apache XML Security 라이브러리를 사용하여 XML 문서를 서명해 보겠습니다. 다음은 간단한 예제 코드입니다.

import org.apache.xml.security.Init;
import org.apache.xml.security.exceptions.XMLSecurityException;
import org.apache.xml.security.signature.XMLSignature;
import org.w3c.dom.Document;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import java.io.File;
import java.io.FileInputStream;

public class XmlSigner {

    public static void main(String[] args) throws Exception {
        Init.init(); // 라이브러리 초기화

        // 서명할 XML 문서 파일 로드
        File file = new File("example.xml");
        FileInputStream inputStream = new FileInputStream(file);
        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
        DocumentBuilder db = dbf.newDocumentBuilder();
        Document document = db.parse(inputStream);

        XMLSignature signature = new XMLSignature(document, file.toURI().toString());

        // 서명
        signature.sign();
    }
}

위 코드는 Apache XML Security 라이브러리를 사용하여 XML 문서를 서명하는 간단한 예제입니다.

XML 문서의 서명 검증하기

이제 서명된 XML 문서를 검증하는 방법에 대해 알아보겠습니다. 다음은 간단한 예제 코드입니다.

import org.apache.xml.security.Init;
import org.apache.xml.security.exceptions.XMLSecurityException;
import org.apache.xml.security.signature.XMLSignature;
import org.w3c.dom.Document;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import java.io.File;
import java.io.FileInputStream;

public class XmlVerifier {

    public static void main(String[] args) throws Exception {
        Init.init(); // 라이브러리 초기화

        // 검증할 서명된 XML 문서 파일 로드
        File file = new File("signed.xml");
        FileInputStream inputStream = new FileInputStream(file);
        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
        DocumentBuilder db = dbf.newDocumentBuilder();
        Document document = db.parse(inputStream);

        XMLSignature signature = new XMLSignature(document, file.toURI().toString());

        // 서명 검증
        boolean isValid = signature.checkSignatureValue(signature.getKeyInfo().item(0));
        System.out.println("서명 유효성: " + isValid);
    }
}

위 코드는 Apache XML Security 라이브러리를 사용하여 서명된 XML 문서의 유효성을 검증하는 예제입니다.

Apache XML Security 라이브러리를 사용하여 XML 문서에 서명을 추가하고 검증하는 방법에 대해 간략하게 살펴보았습니다. 이러한 기능은 XML 데이터의 안전한 교환에 도움이 될 수 있습니다.

더 많은 세부 내용 및 옵션에 대해서는 Apache XML Security 라이브러리의 공식 문서를 참조하시기 바랍니다. Apache XML Security 공식 문서