Hi,
ich habe es soweit fertig gebracht einen WS-Security Service aufzusetzen und einen Client dazu zu basteln, der fröhlich mit dem Server kommuniziert. Das alles läuft zwar ganz toll, aber ich habe jetzt das Problem, dass ich mit all den Beispielen aus der Doku von CXF auf der Serverseite immer einen spezifischen Client angebeen muss, um die Signaturen zu prüfen und zu verschlüsseln. Das bringt mir natürlich nicht wirklich viel, denn ein Service, der nur mit einem Client kommunizieren kann, ist irgendwie wertlos.
Verwendet hab ich aktuell die spring-config, werde aber voraussichtlich noch auf die rein programmatische Version umstellen, da ich kein Fan von Inversion of Control bin und ich dadurch Probleme habe den Client zu bauen... egal, hier sind die beiden entsprechenden Beans, die ich verwende um auf dem Server alles abzuwickeln. Wie komm ich von der expliziten Benennung des Clients weg? wie finde ich raus, welchen alias aus dem keystore ich holen muss?
[XML]
<bean id="TimestampSignEncrypt_Request" class="org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor">
<constructor-arg>
<map>
<!-- Use this action order for local clients -->
<entry key="action" value="Timestamp Signature Encrypt"/>
<!-- Use this action spec for WCF clients
<entry key="action" value="Signature Encrypt Timestamp"/>
-->
<entry key="signaturePropFile"
value="de/narz/apacheCXFTest/helloWorld/keyManagement/config/alice.properties"/>
<entry key="decryptionPropFile"
value="de/narz/apacheCXFTest/helloWorld/keyManagement/config/bob.properties"/>
<entry key="passwordCallbackClass"
value="de.narz.apacheCXFTest.helloWorld.passwordHandling.PasswordCallbackHandler"/>
</map>
</constructor-arg>
</bean>
<!--
WSS4JOutInterceptor for encoding and signing the SOAP response.
There are some attacks that exploit the "cbc" mode of a Symmetric Encryption Algorithm. WSS4J has support for
"gcm" mode algorithms as well. This can be specified via WSHandlerConstants.ENC_SYM_ALGO
("encryptionSymAlgorithm"), for example to "http://www.w3.org/2009/xmlenc11#aes128-gcm".
-->
<bean id="TimestampSignEncrypt_Response" class="org.apache.cxf.ws.security.wss4j.WSS4JOutInterceptor">
<constructor-arg>
<map>
<entry key="action" value="Timestamp Signature Encrypt"/>
<entry key="user" value="bob"/>
<entry key="signaturePropFile"
value="de/narz/apacheCXFTest/helloWorld/keyManagement/config/bob.properties"/>
<entry key="encryptionPropFile"
value="de/narz/apacheCXFTest/helloWorld/keyManagement/config/alice.properties"/>
<entry key="signatureKeyIdentifier" value="DirectReference"/>
<entry key="encryptionUser" value="Alice"/>
<entry key="passwordCallbackClass"
value="de.narz.apacheCXFTest.helloWorld.passwordHandling.PasswordCallbackHandler"/>
<entry key="signatureParts"
value="{Element}{http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd}Timestamp;{Element}{http://schemas.xmlsoap.org/soap/envelope/}Body"/>
<entry key="encryptionParts"
value="{Element}{http://www.w3.org/2000/09/xmldsig#}Signature;{Content}{http://schemas.xmlsoap.org/soap/envelope/}Body"/>
<entry key="encryptionSymAlgorithm"
value="http://www.w3.org/2001/04/xmlenc#tripledes-cbc"/>
</map>
</constructor-arg>
</bean>
[/XML]
ich habe es soweit fertig gebracht einen WS-Security Service aufzusetzen und einen Client dazu zu basteln, der fröhlich mit dem Server kommuniziert. Das alles läuft zwar ganz toll, aber ich habe jetzt das Problem, dass ich mit all den Beispielen aus der Doku von CXF auf der Serverseite immer einen spezifischen Client angebeen muss, um die Signaturen zu prüfen und zu verschlüsseln. Das bringt mir natürlich nicht wirklich viel, denn ein Service, der nur mit einem Client kommunizieren kann, ist irgendwie wertlos.
Verwendet hab ich aktuell die spring-config, werde aber voraussichtlich noch auf die rein programmatische Version umstellen, da ich kein Fan von Inversion of Control bin und ich dadurch Probleme habe den Client zu bauen... egal, hier sind die beiden entsprechenden Beans, die ich verwende um auf dem Server alles abzuwickeln. Wie komm ich von der expliziten Benennung des Clients weg? wie finde ich raus, welchen alias aus dem keystore ich holen muss?
[XML]
<bean id="TimestampSignEncrypt_Request" class="org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor">
<constructor-arg>
<map>
<!-- Use this action order for local clients -->
<entry key="action" value="Timestamp Signature Encrypt"/>
<!-- Use this action spec for WCF clients
<entry key="action" value="Signature Encrypt Timestamp"/>
-->
<entry key="signaturePropFile"
value="de/narz/apacheCXFTest/helloWorld/keyManagement/config/alice.properties"/>
<entry key="decryptionPropFile"
value="de/narz/apacheCXFTest/helloWorld/keyManagement/config/bob.properties"/>
<entry key="passwordCallbackClass"
value="de.narz.apacheCXFTest.helloWorld.passwordHandling.PasswordCallbackHandler"/>
</map>
</constructor-arg>
</bean>
<!--
WSS4JOutInterceptor for encoding and signing the SOAP response.
There are some attacks that exploit the "cbc" mode of a Symmetric Encryption Algorithm. WSS4J has support for
"gcm" mode algorithms as well. This can be specified via WSHandlerConstants.ENC_SYM_ALGO
("encryptionSymAlgorithm"), for example to "http://www.w3.org/2009/xmlenc11#aes128-gcm".
-->
<bean id="TimestampSignEncrypt_Response" class="org.apache.cxf.ws.security.wss4j.WSS4JOutInterceptor">
<constructor-arg>
<map>
<entry key="action" value="Timestamp Signature Encrypt"/>
<entry key="user" value="bob"/>
<entry key="signaturePropFile"
value="de/narz/apacheCXFTest/helloWorld/keyManagement/config/bob.properties"/>
<entry key="encryptionPropFile"
value="de/narz/apacheCXFTest/helloWorld/keyManagement/config/alice.properties"/>
<entry key="signatureKeyIdentifier" value="DirectReference"/>
<entry key="encryptionUser" value="Alice"/>
<entry key="passwordCallbackClass"
value="de.narz.apacheCXFTest.helloWorld.passwordHandling.PasswordCallbackHandler"/>
<entry key="signatureParts"
value="{Element}{http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd}Timestamp;{Element}{http://schemas.xmlsoap.org/soap/envelope/}Body"/>
<entry key="encryptionParts"
value="{Element}{http://www.w3.org/2000/09/xmldsig#}Signature;{Content}{http://schemas.xmlsoap.org/soap/envelope/}Body"/>
<entry key="encryptionSymAlgorithm"
value="http://www.w3.org/2001/04/xmlenc#tripledes-cbc"/>
</map>
</constructor-arg>
</bean>
[/XML]
Zuletzt bearbeitet: