I'm sure WS fans applaud when IBM released WebSphere 6.0 last December with support for WS-Security. Finally IBM and Microsoft support the same version of a WS-* protocol other then SOAP and WSDL in their mainline supported products.
So how can we make them work?
Consider the following three basic WS-Security scenarios supported by both products
1. UsernameToken sent over HTTPS. UsernameToken is used for client authentication, HTTPS is used for message protection. Beneficial for the internet deployments, supersedes HTTP Basic Auth over HTTPS, as incorporates token in the message, allows to flow the token end to end, allows for multiple tokens.
In order to configure WSE 2.0 SP3 to consume UsernameToken from WebSphere, one needs to send Password in Text and disable WSE replayDetection feature as discussed here . The reverse (sending UsernameToken from WSE2.0 client to WebSphere 6.0 service) does not require any config changes.
2. X509 Signing. Requestor signs a request using private key associated with Requestor's X509v3 certificate. Responder verifies the message signature using the public key associated with Requestor's certificate.
To make WebSphere 6.0 and WSE2.0 interoperate on this scenario, one needs to set on WebSphere 6.0 side (on the Security config tab) the BinarySecurityToken token type to be “http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3” - the value from the OASIS WSS1.0 standard. The default setting in WebSphere 6.0 is “…#X509” which was introduced in the non-normative errata from TC and would not interoperate with WSE2.0 SP3.
3. X509 Mutual Authentication, Sign then Encrypt. Client and Service each have a cert, representing their identities. Client authentication is provided using Client's certificate. Server's authentication is provided using Server's cert. Request is signed using private key corresponding to the Client's certificate then encrypted using ephemeral key K1 wrapped for Server's certificate. Response is signed using private key of Server;s certificate then encrypted using ephemeral key K2 wrapped for Client's cert. This is a great scenario for server to server (B2B) communication. Or if the client app relies on PKI infrastructure (e.g. smartcards).
There is unfortunately no way to make WSE2.0 SP3 and WebSphere 6.0 interoperate on Scenario #3 due to breaking differences between the OASIS WSS X509 Token Profile 1.0 standard that WSE2.0 SP3 implements and OASIS WSS X509 Token Profile 1.0 non-normative errata that WebSphere 6.0 followed. Specifically the issue is in the different URIs used for KeyIdentifier/@ValueType in an external reference to the wrapping X509 token inside EncryptedKey. OASIS TC is aware of the problem with errata and is working to resolve the issue and remove breaking changes from errata. IBM is aware of the issue and plans to have a fix in the next service pack to support OASIS WSS 1.0
Posted
Apr 13 2005, 11:47 PM
by
kirill-gavrylyuk