java स्प्रिंग-डब्ल्यूएस के लिए xws-security में X509PKIPathv1 के लिए समर्थन




spring spring-ws (2)

आपको वहां आने वाली दिलचस्प समस्या है।

जहां तक ​​मैं अपने Google-fu के साथ कह सकता हूं, कुछ परियोजनाओं में # X509PKIPathv1 के लिए समर्थन मौजूद है (उदाहरण के लिए, ओरेकल के एक्सएमएलसेक या ओपन एसएएमएल ), हालांकि यह व्यापक नहीं है और सोप यूआई जैसे एप्लिकेशन भी एसओएपी- WS।

इतना ही नहीं, लेकिन अन्य भाषाओं / ढांचे में सहायता की कमी है, जैसे Delphi और .NET , आईबीएम जेआरई

आप इस एसओ के आधार पर क्या कर सकते हैं और विशेष रूप से यह एसओ आपके स्वयं के WebServiceTemplate / WebServiceMessageSender को कार्यान्वित कर रहा है।

मैं एक मौजूदा webservice के लिए अनुरोध भेजने की कोशिश कर रहा हूँ। यह webservice मेरे द्वारा शासित नहीं है। इस webservice की सुरक्षा नीति के लिए मुझे अपने एसओएपी अनुरोध में अपनी पूरी प्रमाणपत्र श्रृंखला भेजने की आवश्यकता है। मेरी प्रमाणपत्र श्रृंखला में 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 माध्यम से इसे हासिल करने की कोशिश कर रहा हूं। स्प्रिंग-डब्ल्यूएस सुरक्षा के लिए वसंत-डब्ल्यूएस-सुरक्षा का उपयोग करता है। स्प्रिंग-डब्ल्यूएस-सुरक्षा प्रतिनिधि 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- सुरक्षा 2 स्वादों में आता है:

    <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>

पहला स्प्रिंग डब्ल्यूएस सुरक्षा द्वारा उपयोग किया जाता है। दूसरा विरासत है।

Xws-security में मेरी XWSS कॉन्फ़िगरेशन को लागू करना BinarySecurityToken नामक कक्षा में किया जाता है। बाइनरी सिक्योरिटी टोकन नामक एक फ़ील्ड है

valueType

वैल्यू टाइप के जावाडॉक का कहना है कि इसमें X509PKIPathv1 (दूसरों के बीच) के लिए समर्थन है। हालांकि, यह इस सेटटर द्वारा बताए गए अनुसार नहीं है:

    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;
}

क्लास संदेश कॉन्स्टेंट्स (भी) X509PKIPathv1 के लिए स्थिर नहीं है। जब मैं अपना कोड चलाता हूं, तो मुझे अपेक्षित परिणाम मिलते हैं:

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

मैं legacy com.sun.xml.wss.xws-security:3.0 के स्रोत कोड को देखने में सक्षम था। मेरे प्रयासों के बावजूद, मुझे com.sun.xml.wsit.xws-security-1.3.1 का स्रोत कोड नहीं मिला है। हालांकि मुझे विश्वास है कि कोड वही है। मैंने दोनों पुस्तकालयों की कोशिश की और दोनों मुझे एक ही अपवाद देते हैं। मैंने डिफ़ॉल्ट वसंत-ws-security का उपयोग करके और दोनों पुस्तकालयों (एक समय में एक) को स्पष्ट निर्भरता घोषणाओं का उपयोग करके इसकी कोशिश की।

मेरे सवाल:

  1. क्या कोई x509PKIPathv1 के मान प्रकार के साथ X509 हस्ताक्षर उत्पन्न करने के लिए xws-security का उपयोग करने में सक्षम है और एक मुख्य संदर्भ प्रकार जो डायरेक्ट है?
  2. क्या अन्य xws- सुरक्षा कार्यान्वयन मौजूद हैं जो यह पेशकश करते हैं? या मुझे Wss4j जैसे एक पूरी तरह से अलग दृष्टिकोण देखना चाहिए?

मैंने बाइनरी सेक्योरिटी टोकन को फिर से लिखने पर विचार किया है, लेकिन शायद यह डीएसआईजी में हस्ताक्षरप्रोसेसर के X509 हस्ताक्षर को फिर से लिखने का भी अर्थ होगा।


ValueType # X509v3, # X509PKIPathv1 हो सकता है

यह यहां पाया गया है XWS-SecurityIntro4 क्या आपने विशेष रूप से किसी URL के बजाय उन मानों को आजमाया है?





x509