2016-05-31 69 views
1

Ich versuche, einen Webservice mit JAXB und SpringWS zu entwickeln. aber ich habe eine Frage. Wo stelle ich meine wss-Sicherheit und wie ich einen Header erstellen?JAXB Header-Sicherheit mit Spring-WS

das ist mein eigentlicher Code:

CONTEXT SPRING CLIENT

@Configuration 
public class MonsterWSClientContext { 

    private static final String URL = "AAA"; 
    private static final String TEST_URL = "TEST"; 
    private static final String WS_URL = TEST_URL + "/soap/WSOfferService"; 

    @Bean 
    @Autowired 
    public MonsterWSClient monsterClient(Jaxb2Marshaller marshaller) { 
     MonsterWSClient client = new MonsterWSClient(); 
     client.setDefaultUri(WS_URL); 
     client.setMarshaller(marshaller); 
     client.setUnmarshaller(marshaller); 
     return client; 
    } 


    @Bean 
    public Jaxb2Marshaller marshaller() { 
     Jaxb2Marshaller jaxb2Marshaller = new Jaxb2Marshaller(); 
     jaxb2Marshaller.setPackagesToScan(com.monster.schemas.monster.ObjectFactory.class.getPackage().getName(), 
       com.monster.schemas.monsterheader.ObjectFactory.class.getPackage().getName(), 
       com.monster.schemas.ObjectFactory.class.getPackage().getName(), 
       com.monster.webservices.monsterportal.ObjectFactory.class.getPackage().getName()); 
     return jaxb2Marshaller; 

    } 

} 

dies ist der Client

public class MonsterWSClient extends WebServiceGatewaySupport { 


    public JobsResponse updateJob(Job request) { 

     return (JobsResponse) getWebServiceTemplate().marshalSendAndReceive(request, 
       new SoapActionCallback(getDefaultUri() + "/createOffer")); 
    } 
} 

und dies ist der Haupt:

public class Test { 
    public JobsResponse callMonster(String jobRefCode, String userName, 
    InformazioniAnnuncio datiAnnuncio) 
    { 
     MonsterWSClient client = new MonsterWSClient(); 
     JobsResponse response = new JobsResponse();  
     return response = client.updateJob(createJob(jobRefCode, userName, datiAnnuncio)); 

    } 
} 
  • ich habe das Job-Objekt erstellt.
  • aber ich verstehe nicht, wo ich den Header mit meinem Credential setzen.

Danke.

+0

hallo, aber jetzt habe ich ein anderes Problem, wenn ich starten Sie diese App, Fehler Bean mit dem Namen ‚Lookup‘ definiert in home.LaunchCall erstellen: Unbefriedigend Abhängigkeit mit dem Index durch Konstruktorargument ausgedrückt 0 vom Typ [MonsterWSClient]: Keine berechtigende Bean vom Typ [com.proximainformatic.client.MonsterWSClient] gefunden für Abhängigkeit: erwartet mindestens 1 Bean, die sich als Autowire-Kandidat für diese Abhängigkeit qualifiziert. Abhängigkeitsanmerkungen: {}; verschachtelte Ausnahme ist org.springframework.beans.factory.NoSuchBeanDefinitionException: Keine berechtigte Bean des Typs [MonsterWSClient] für Abhängigkeit gefunden: erwartet. – reve

Antwort

2

Sie müssen Spring-Ws-Sicherheit verwenden. Verwenden Sie diesen Link spring ws security. Diese Seite hat alle sicherheitsrelevanten Einstellungen und Sie müssen Wss4jSecurityInterceptor mit Ihrem Benutzernamen und Passwort einrichten.

So etwas

@Bean 
    public Wss4jSecurityInterceptor securityInterceptor() { 
    Wss4jSecurityInterceptor securityInterceptor = new Wss4jSecurityInterceptor(); 
    securityInterceptor.setSecurementActions("UsernameToken"); 
    securityInterceptor.setSecurementUsername({username}); 
    securityInterceptor.setSecurementPassword({password}); 
    securityInterceptor.setSecurementPasswordType("PasswordText"); 
    securityInterceptor.setSecurementUsernameTokenElements("Created"); 
    return securityInterceptor;