programing

X509PK 지원IPathv1 inxws-Spring-WS용 보안

lastmoon 2023. 8. 15. 11:24
반응형

X509PK 지원IPathv1 inxws-Spring-WS용 보안

기존 웹 서비스에 요청을 보내려고 합니다.이 웹 서비스는 제가 관리하지 않습니다.이 웹 서비스의 보안 정책에 따라 SOAP 요청에 전체 인증서 체인을 보내야 합니다.나의 인증서 체인에는 3개의 인증서가 있습니다.인증서 체인의 유효성을 테스트할 수 있기 때문에 인증서 체인 설정에 문제가 없습니다.

이 설정에 대한 보안 구성(= 요청에서 전체 인증서 체인 전송)은 다음과 같습니다.

<xwss:Sign id="signature">
   <xwss:X509Token 
        certificateAlias="alias" 
        keyReferenceType="Direct"
        valueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509PKIPathv1" />
</xwss:Sign>

저는 Spring-WS를 통해 이를 달성하기 위해 노력하고 있습니다.Spring-WS는 보안을 위해 spring-ws-security를 사용합니다.spring-ws-security 대표자 xws-security.

    <dependency>
        <groupId>org.springframework.ws</groupId>
        <artifactId>spring-ws-security</artifactId>
        <version>2.1.0.RELEASE</version>
        <exclusions>
            <exclusion>
                <groupId>org.apache.ws.security</groupId>
                <artifactId>wss4j</artifactId>
            </exclusion>            
            <exclusion>
                <groupId>com.sun.xml.wsit</groupId>
                <artifactId>xws-security</artifactId>
            </exclusion>            
        </exclusions>
     </dependency>

Xws-보안에는 두 가지 종류가 있습니다.

    <dependency>
        <groupId>com.sun.xml.wsit</groupId>
        <artifactId>xws-security</artifactId>
        <version>1.3.1</version>
    </dependency>

그리고.

    <dependency>
        <groupId>com.sun.xml.wss</groupId>
        <artifactId>xws-security</artifactId>
        <version>3.0</version>
    </dependency>

첫 번째는 Spring WS Security에서 사용합니다.두 번째는 유산입니다.

xws-security에서 XWSS 구성 적용은 BinarySecurity라는 클래스에서 수행됩니다.토큰. 이진 보안토큰에 다음 필드가 있습니다.

valueType

valueType의 JavaDoc은 X509PK를 지원한다고 합니다.IPathv1(다른 항목 중).그러나 이 설정자가 언급한 바와 같이 그렇지 않습니다.

    protected void setValueType(String valueType) {
    if (!(MessageConstants.X509v3_NS.equals(valueType)||MessageConstants.X509v1_NS.equals(valueType))) { 
        log.log(Level.SEVERE,"WSS0342.valtype.invalid");
        throw new RuntimeException("Unsupported value type: " + valueType);
    }
    this.valueType = valueType;
}

MessageConstant 클래스에 X509PK에 대한 정적이 없습니다.IPathv1.코드를 실행하면 다음과 같은 예상 결과가 나타납니다.

Unsupported value type: http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509PKIPathv1

나는 유산의 소스 코드를 볼 수 있었습니다.com.sun.xml.wss.xws-security:3.0내가 노력했음에도 불구하고, 나는 소스 코드를 찾지 못했습니다.com.sun.xml.wsit.xws-security-1.3.1하지만 코드는 동일하다고 생각합니다.저는 두 도서관을 모두 사용해 보았는데, 둘 다 예외입니다.기본 spring-ws-security를 사용하고 두 라이브러리(한 번에 하나씩)에 대한 명시적 종속성 선언을 사용하여 시도했습니다.

질문:

  1. valueType이 X509PK인 X509 서명을 생성하기 위해 xws-security를 사용할 수 있는 사람이 있습니까?IPathv1 및 Direct인 키ReferenceType?
  2. 이를 제공하는 다른 xws-보안 구현이 있습니까?아니면 Wss4j와 같은 완전히 다른 접근 방식을 검토해야 합니까?

바이너리 보안을 다시 작성하는 것을 고려했습니다.토큰입니다. 하지만 그것은 아마도 DSIG에서 시그니처 프로세서의 X509 서명을 다시 쓰는 것을 의미할 수 있습니다.

흥미로운 문제가 생겼군요.

내 Google-fu로 알 수 있는 바로는 #X509PK에 대한 지원이 있습니다.일부 프로젝트(예: Oracle의 XMLSec 또는 OpenSAML)에서는 IPathv1이 널리 보급되지 않았으며 Soap UI와 같은 애플리케이션에서도 SOAP-WS용으로 IPathv1을 지원하지 않습니다.

뿐만 아니라 Delphi 및 같은 다른 언어/프레임워크도 동일한 지원 부족을 겪고 있습니다.NET, IBM JRE.

SO특히 이 SO를 기반으로 사용자가 수행할 수 있는 작업은 사용자 자신의 웹 서비스 템플릿/WebServiceMessageSender를 구현하는 것입니다.

valueType은 #X509v3, #X509PK일 수 있습니다.IPathv1

XWS-보안에서 확인할 수 있습니다.소개 4 URL 대신 이러한 값을 구체적으로 사용해 보셨습니까?

풀 요청을 통해 X509PK를 사용할 수 있습니다.IPathv1.

언급URL : https://stackoverflow.com/questions/12596543/support-for-x509pkipathv1-in-xws-security-for-spring-ws

반응형