My ws-security setting doesn't work.
aupres May 16, 2013 4:22 AMMy WS-security reference site is https://docs.jboss.org/author/display/JBWS/WS-Security.
I coded interface and bean like below :
@WebService
public interface IHelloPort {
  @WebMethod
  @WebResult
  public String sayHello(@WebParam String name);
}
@WebService
@EndpointConfig(configFile = "WEB-INF/jaxws-endpoint-config.xml", configName = "Custom WS-Security Endpoint")
public class HelloBean implements IHelloPort {
  @Override
  @WebMethod
  @WebResult
  public String sayHello(@WebParam String name) {
    // TODO Auto-generated method stub
    return "Hello " + name;
  }
}
Then I generated WEB-INF/jaxws-endpoint-config.xml
<jaxws-config xmlns="urn:jboss:jbossws-jaxws-config:4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
xmlns:javaee="http://java.sun.com/xml/ns/javaee" 
xsi:schemaLocation="urn:jboss:jbossws-jaxws-config:4.0 schema/jbossws-jaxws-config_4_0.xsd">
  <endpoint-config>    
   <config-name>Custom WS-Security Endpoint</config-name>    
   <property>      
    <property-name>ws-security.signature.properties</property-name>      
    <property-value>${jboss.server.config.dir}/wssecurity.properties</property-value>    
   </property>    
   
   <property>      
    <property-name>ws-security.encryption.properties</property-name>      
    <property-value>${jboss.server.config.dir}/wssecurity.properties</property-value>    
   </property>    
   
   <property>      
    <property-name>ws-security.signature.username</property-name>      
    <property-value>joseph</property-value>    
   </property>    
   
   <property>      
    <property-name>ws-security.encryption.username</property-name>      
    <property-value>joseph</property-value>    
   </property>    
   
   <property>      
    <property-name>ws-security.callback-handler</property-name>      
    <property-value>com.aaa.ws.KeystorePasswordCallback</property-value>    
   </property>  
  </endpoint-config>
</jaxws-config>
Next I made ${jboss.server.config.dir}/wssecurity.properties and KeystorePasswordCallback.java like below
-- wssecurity.properties
org.apache.ws.security.crypto.provider=org.apache.ws.security.components.crypto.Merlin
org.apache.ws.security.crypto.merlin.keystore.type=jks
org.apache.ws.security.crypto.merlin.keystore.password=111111
org.apache.ws.security.crypto.merlin.keystore.alias=testWSssl
org.apache.ws.security.crypto.merlin.keystore.file=${jboss.server.config.dir}/jboss7ssl.jks
-- KeystorePasswordCallback.java
public class KeystorePasswordCallback implements CallbackHandler {
private Map<String, String> passwords = new HashMap<String, String>();
public KeystorePasswordCallback() {
  passwords.put("joseph", "11111"); 
}
@Override
public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException {
  // TODO Auto-generated method stub
   for (int i = 0; i < callbacks.length; i++) {
    WSPasswordCallback pc = (WSPasswordCallback)callbacks[i];
    String pass = passwords.get(pc.getIdentifier());
    
   if (pass != null) {            
     pc.setPassword(pass);
     return;
   }
  }
}
public void setAliasPassword(String alias, String password) {
  passwords.put(alias, password);
}
}
Last I generated jboss7ssl.jks file with keytool command
keytool -genkey -alias testWSssl -keystore jboss7ssl.jks -keyalg RSA -validity 180
Deployment threw no exception. But WS-security encryption was not applied to wsdl. Generated soap file was just plain xml file.
WS-security encryption setting doesn't work. Did i miss anything?
I need your advice. Thanks in advanced !
 
     
    
