WS-Security in ODE has been created by Alexis Midon (Mar 24, 2009).

Content:

How to use WS-Security in ODE?

ODE 1.3.1 (yet to be released) introduces support for WS-Security: secure services can now be invoked from a process, and the process service itself might be secured. A first part will explain how to invoke a secured service, a second part how to secure the process service.

ODE integrates Axis2 so using Rampart, the Axis2 security modules, goes without saying. As a result this section will only focus on Rampart integration. Rampart and WS-Security specifications won't be detailed here. Please refer to their ad-hoc documentations for further details.

Quick Rampart introduction

As any other Axis2 module, Rampart is configurable with Axis2 Service configuration files. For instance a service.xml document, using the parameter based configuration model, might be:

<service>

    <module ref="rampart" />

    <parameter name="OutflowSecurity">
      <action>
        <items>Encrypt</items>
        <encryptionUser>service</encryptionUser>
        <encryptionPropFile>TestRampartBasic/secured-services/client.properties</encryptionPropFile>
      </action>
    </parameter>

    <parameter name="InflowSecurity">
      <action>
        <items>Encrypt</items>
        <passwordCallbackClass>org.apache.rampart.samples.sample05.PWCBHandler</passwordCallbackClass>
        <decryptionPropFile>TestRampartBasic/secured-services/client.properties</decryptionPropFile>
      </action>
    </parameter>
</service>

another example using WS-Security Policy based configuration model could be:

<service>

    <module ref="rampart"/>

    <wsp:Policy wsu:Id="SecConvPolicy2" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy">
        <wsp:ExactlyOne>
            <wsp:All>
                <sp:SymmetricBinding xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
                    <wsp:Policy>
                        <sp:ProtectionToken>
                            <wsp:Policy>
                                <sp:SecureConversationToken sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient">
                                    <wsp:Policy>
                                        <sp:RequireDerivedKeys/>
                                        <sp:BootstrapPolicy>
                                            <wsp:Policy>
                                                <sp:EncryptedParts>
                                                    <sp:Body/>
                                                </sp:EncryptedParts>
                                                <sp:SymmetricBinding>
                                                    <wsp:Policy>
                                                        <sp:ProtectionToken>
                                                            <wsp:Policy>
                                                                <sp:X509Token sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/Never">
                                                                    <wsp:Policy>
                                                                        <sp:RequireDerivedKeys/>
                                                                        <sp:RequireThumbprintReference/>
                                                                        <sp:WssX509V3Token10/>
                                                                    </wsp:Policy>
                                                                </sp:X509Token>
                                                            </wsp:Policy>
                                                        </sp:ProtectionToken>
                                                        <sp:AlgorithmSuite>
                                                            <wsp:Policy>
                                                                <sp:Basic128Rsa15/>
                                                            </wsp:Policy>
                                                        </sp:AlgorithmSuite>
                                                        <sp:Layout>
                                                            <wsp:Policy>
                                                                <sp:Strict/>
                                                            </wsp:Policy>
                                                        </sp:Layout>
                                                        <sp:IncludeTimestamp/>
                                                        <sp:EncryptSignature/>
                                                        <sp:OnlySignEntireHeadersAndBody/>
                                                    </wsp:Policy>
                                                </sp:SymmetricBinding>
                                                <sp:EndorsingSupportingTokens>
                                                    <wsp:Policy>
                                                        <sp:X509Token sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient">
                                                            <wsp:Policy>
                                                                <sp:RequireThumbprintReference/>
                                                                <sp:WssX509V3Token10/>
                                                            </wsp:Policy>
                                                        </sp:X509Token>
                                                    </wsp:Policy>
                                                </sp:EndorsingSupportingTokens>
                                                <sp:Wss11>
                                                    <wsp:Policy>
                                                        <sp:MustSupportRefKeyIdentifier/>
                                                        <sp:MustSupportRefIssuerSerial/>
                                                        <sp:MustSupportRefThumbprint/>
                                                        <sp:MustSupportRefEncryptedKey/>
                                                        <sp:RequireSignatureConfirmation/>
                                                    </wsp:Policy>
                                                </sp:Wss11>
                                                <sp:Trust10>
                                                    <wsp:Policy>
                                                        <sp:MustSupportIssuedTokens/>
                                                        <sp:RequireClientEntropy/>
                                                        <sp:RequireServerEntropy/>
                                                    </wsp:Policy>
                                                </sp:Trust10>
                                            </wsp:Policy>
                                        </sp:BootstrapPolicy>
                                    </wsp:Policy>
                                </sp:SecureConversationToken>
                            </wsp:Policy>
                        </sp:ProtectionToken>
                        <sp:AlgorithmSuite>
                            <wsp:Policy>
                                <sp:Basic128Rsa15/>
                            </wsp:Policy>
                        </sp:AlgorithmSuite>
                        <sp:Layout>
                            <wsp:Policy>
                                <sp:Strict/>
                            </wsp:Policy>
                        </sp:Layout>
                        <sp:IncludeTimestamp/>
                        <sp:EncryptSignature/>
                        <sp:OnlySignEntireHeadersAndBody/>
                    </wsp:Policy>
                </sp:SymmetricBinding>
                <sp:Wss11 xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
                    <wsp:Policy>
                        <sp:MustSupportRefKeyIdentifier/>
                        <sp:MustSupportRefIssuerSerial/>
                        <sp:MustSupportRefThumbprint/>
                        <sp:MustSupportRefEncryptedKey/>
                    </wsp:Policy>
                </sp:Wss11>
                <sp:Trust10 xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
                    <wsp:Policy>
                        <sp:MustSupportIssuedTokens/>
                        <sp:RequireClientEntropy/>
                        <sp:RequireServerEntropy/>
                    </wsp:Policy>
                </sp:Trust10>
                <sp:EncryptedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
                    <sp:Body/>
                </sp:EncryptedParts>
                <ramp:RampartConfig xmlns:ramp="http://ws.apache.org/rampart/policy"> 
                    <ramp:user>client</ramp:user>
                    <ramp:encryptionUser>service</ramp:encryptionUser>
                    <ramp:passwordCallbackClass>org.apache.rampart.samples.policy.sample04.PWCBHandler</ramp:passwordCallbackClass>
                
                    <ramp:signatureCrypto>
                        <ramp:crypto provider="org.apache.ws.security.components.crypto.Merlin">
                            <ramp:property name="org.apache.ws.security.crypto.merlin.keystore.type">JKS</ramp:property>
                            <ramp:property name="org.apache.ws.security.crypto.merlin.file">TestRampartPolicy/secured-services/client.jks</ramp:property>
                            <ramp:property name="org.apache.ws.security.crypto.merlin.keystore.password">apache</ramp:property>
                        </ramp:crypto>
                    </ramp:signatureCrypto>
                    <ramp:encryptionCypto>
                        <ramp:crypto provider="org.apache.ws.security.components.crypto.Merlin">
                            <ramp:property name="org.apache.ws.security.crypto.merlin.keystore.type">JKS</ramp:property>
                            <ramp:property name="org.apache.ws.security.crypto.merlin.file">TestRampartPolicy/secured-services/client.jks</ramp:property>
                            <ramp:property name="org.apache.ws.security.crypto.merlin.keystore.password">apache</ramp:property>
                        </ramp:crypto>
                    </ramp:encryptionCypto>
                
                </ramp:RampartConfig>
            </wsp:All>
        </wsp:ExactlyOne>
    </wsp:Policy>

</service>

The important thing to notice here is that these documents are plain Axis2 Service configuration files. And as explained in the ODE User Guide, a mechanism to attach these files to services already exists.

Reply via email to