I am using a WSS4JOutInterceptor
and a WSS4JInInterceptor
to intercept soap web service. In there I am using
passwordCallbackClass
Sample intercepter
<bean class="org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor" id="inbound-security">
<constructor-arg>
<map>
<entry key="action" value="Signature Encrypt"/>
<entry key="signaturePropFile" value="serviceKeystore.properties"/>
<entry key="decryptionPropFile" value="clientKeystore.properties"/>
<entry key="passwordCallbackClass" value="com.service.toolprovider.ToolProviderCallbackHandler"/>
</map>
</constructor-arg>
</bean>
In my password callback class I need to inject another class to get password.
@Component
public class ToolProviderCallbackHandler implements CallbackHandler {
@Autowired
private IAuthenticationConfiguration configuration;
@Override
public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException {
for (Callback callback : callbacks) {
WSPasswordCallback wsPasswordCallback = (WSPasswordCallback) callback;
if (wsPasswordCallback.getUsage() == WSPasswordCallback.SIGNATURE || wsPasswordCallback.getUsage() == WSPasswordCallback.DECRYPT) {
if (wsPasswordCallback.getIdentifier().equals("client alias")) {
wsPasswordCallback.setPassword("password");
}
}
}
}
}
But here autowired is not working. configuration property is always null.