Не найдено исключение заголовка WS-Security при выполнении запроса - PullRequest
0 голосов
/ 18 декабря 2018

Я настроил аутентификацию имени пользователя и пароля Ws-Security в моем проекте SOAP.Теперь, когда я выполняю запрос в интерфейсе SOAP, я получаю исключение:

<faultcode>SOAP-ENV:Client</faultcode>
<faultstring xml:lang="en">No WS-Security header found</faultstring>

В SoapClientConfig.java у меня есть

public class SoapClientConfig {
    @SuppressWarnings("deprecation")
    @Bean
    public Wss4jSecurityInterceptor securityInterceptor(){
        @SuppressWarnings("deprecation")
        Wss4jSecurityInterceptor wss4jSecurityInterceptor = new Wss4jSecurityInterceptor();
        wss4jSecurityInterceptor.setSecurementActions("Timestamp UsernameToken");
        wss4jSecurityInterceptor.setSecurementUsername("admin");
        wss4jSecurityInterceptor.setSecurementPassword("secret");
        return wss4jSecurityInterceptor;
    }
    @Bean
    public Jaxb2Marshaller getMarshaller(){
        Jaxb2Marshaller marshaller = new Jaxb2Marshaller();
        marshaller.setContextPath("org.onewallet.webservices.disburse");
        return marshaller;
    }
    @Bean
    public SoapConnector createLoanClient(){
        SoapConnector soapConnector = new SoapConnector();
        soapConnector.setMarshaller(getMarshaller());
        soapConnector.setUnmarshaller(getMarshaller());
        soapConnector.setDefaultUri("http://localhost:8080/soapws/disburse");
        ClientInterceptor[] interceptors = new ClientInterceptor[] {securityInterceptor()};
        soapConnector.setInterceptors(interceptors);
        return soapConnector;
    } }

RunClient.java

public class RunClient {
    public static void main(String[] args) {
       AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(SoapClientConfig.class);
       System.out.println(context.getBeanDefinitionCount());
       SoapConnector soapConnector = context.getBean(SoapConnector.class);

       CreateLoanRequest request = new CreateLoanRequest();
      request.setLoanStatus(100);
      CreateLoanResponse resp = soapConnector.createLoan(request);
       System.out.println("response: " + resp);
    } }

LoanEndpoint.java

@Endpoint
public class LoanEndpoint {
    private static final String NAMESPACE_URI = "http://www.onewallet.org/webservices/disburse";
    @Autowired
    private ILoanService loanService;

    @PayloadRoot(namespace = NAMESPACE_URI, localPart = "createLoanRequest")
    @ResponsePayload
    public CreateLoanResponse createLoan(@RequestPayload CreateLoanRequest request) {
        CreateLoanResponse response = new CreateLoanResponse();     
        ServiceStatus serviceStatus = new ServiceStatus();      
        Loan loan = new Loan();
        loan.setLoanStatus(request.getLoanStatus());
        loan.setExternalId("B9076");
     return response; }

Я обновил свое определение WSDL в последующих обменах SoapUI, но мой запрос не показывает добавленные мной заголовки Wss4jSecurityInterceptor.Что-то еще, что я должен настроить в SOAPUI?Или мне не хватает какой-то другой конфигурации в моем сервисе SOAP

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...