But some may wants to access backend service as different users. This post discusses how you can extend it to support dynamic user name in policy file.
Setting up environment :
Setup both WSO2 AS and WSO2 ESB as mentioned in previous post.
ClassMediator (ESB)
- In this scenario, we set username as a property in the ESB proxy.
- To pass username into RampartConfiguration, we use custom class mediator called, SetUserMediator.
- This custom mediator, adds username into rampartConfigCallbackProperties map and set the map into Axis2MessageContext. So later we can access these properties from Rampart ConfigCallbackHandlers.
- We have to use customMediator, since we can't set a Map using standard ESB mediators.
- ( Maven Project is located here. )
Rampart ConfigCallbackHandler (ESB)
- Similar to PasswordCallback handler, Rampart provides Configuration Callback handler to dynamically load Rampart configuaraion to runtime. We use this to set username dynamically.
- ( Maven Project is located here. )
Policy for UsernameToken ( ESB )
- Create an ESB in-line xml local entry called "UTOverTransportDynamic.xml" with following content.
Proxy Service (ESB)
- Create a proxy called EchoUTDynamicProxy with following content.
Testing Scenario
- Enable Soap tracer on WSO2 AS.
- Invoke EchoUTDynamicProxy using SOAP UI.
You can see Username token in request message as follows.
No comments:
Post a Comment