2017-03-21 2 views
0

Ich versuche, das Zertifikat für WS-Sicherheit zu laden, die sich in meinem Ressourcenordner befindet, das Zertifikat ist korrekt in meinem JAR gepackt. Aber ich bekomme FileNotFoundException, als ich versuchte, es zu laden.Datei nicht gefunden in getResource

Ich kann nicht mein Zertifikat außerhalb der JAR ..

Caused by: org.apache.ws.security.components.crypto.CredentialException: Proxy file (vfs:/C:/Users/myuser/Redhat/jboss-eap-6.4/bin/content/myapp.ear/myapp.jar/CERT.PFX) not found. 
    at org.apache.ws.security.components.crypto.Merlin.loadInputStream(Merlin.java:338) [wss4j-1.6.19.redhat-2.jar:1.6.19.redhat-2] 
    at org.apache.ws.security.components.crypto.Merlin.loadProperties(Merlin.java:180) [wss4j-1.6.19.redhat-2.jar:1.6.19.redhat-2] 
    at org.apache.ws.security.components.crypto.Merlin.<init>(Merlin.java:141) [wss4j-1.6.19.redhat-2.jar:1.6.19.redhat-2] 
    at org.apache.ws.security.components.crypto.CryptoFactory.getInstance(CryptoFactory.java:117) [wss4j-1.6.19.redhat-2.jar:1.6.19.redhat-2] 
    ... 71 more 

Caused by: java.io.FileNotFoundException: vfs:/C:/Users/myuser/Redhat/jboss-eap-6.4/bin/content/myapp.ear/myapp.jar/CERT.PFX (The filename, directory name, or volume label syntax is incorrect) 
    at java.io.FileInputStream.open0(Native Method) [rt.jar:1.8.0_102] 
    at java.io.FileInputStream.open(FileInputStream.java:195) [rt.jar:1.8.0_102] 
    at java.io.FileInputStream.<init>(FileInputStream.java:138) [rt.jar:1.8.0_102] 
    at java.io.FileInputStream.<init>(FileInputStream.java:93) [rt.jar:1.8.0_102] 
    at org.apache.ws.security.components.crypto.Merlin.loadInputStream(Merlin.java:333) [wss4j-1.6.19.redhat-2.jar:1.6.19.redhat-2] 
    ... 74 more 

Properties props = new Properties(); 
props.put("org.apache.ws.security.crypto.provider", "org.apache.ws.security.components.crypto.Merlin"); 
props.put("org.apache.ws.security.crypto.merlin.keystore.type", "PKCS12"); 
props.put("org.apache.ws.security.crypto.merlin.keystore.password", "passxxxx"); 
props.put("org.apache.ws.security.crypto.merlin.keystore.file", getClass().getResource("/CERT.PFX")); 
props.put("org.apache.ws.security.crypto.merlin.keystore.alias", "aliasxxxx"); 

Map<String,Object> ctx = ((BindingProvider) iauthService).getRequestContext(); 

ctx.put("ws-security.signature.properties", props); 

Antwort

0

So setzen, können Sie nicht Fileinputstream verwenden, um eine Datei in einem JAR gepackt zu lesen - es ist nicht mehr eine Datei ist. FileInputStream funktioniert nur für tatsächliche Datenträgerdateien.

Ich habe am Ende eine temporäre Datei aus dem Zertifikat-Stream erstellen. (How to convert InputStream to virtual File)

Dann ging file.getPath() in die Eigenschaft.