Apache CXF STSClient Token Запрос на отправку пустого SOAPBody - PullRequest
0 голосов
/ 15 октября 2019

У меня есть метод, который должен вернуть мне токен, используя Apache CXF:

private static STSClient getSTSClientToken() throws Exception {
    Bus bus = BusFactory.newInstance().createBus();
    BusFactory.setThreadDefaultBus(bus);

    STSClient sts = new STSClient(bus);

    QName serviceQName = new QName("namespace", "service_name");
    QName endpointQName = new QName("namespace", "port");
    sts.setServiceQName(serviceQName);
    sts.setEndpointQName(endpointQName);

    sts.setWsdlLocation("wsdlLocation");
    sts.setEnableAppliesTo(false);
    sts.setSecureConv(true);
    sts.setSendRenewing(false);
    sts.setSoap12();
    sts.setKeySize(256);
    sts.setWspNamespace("http://schemas.xmlsoap.org/ws/2004/09/policy");

    sts.getRequestContext().put("ws-security.username.sct", USERNAME);
    sts.getRequestContext().put("ws-security.password.sct", PASSWORD);

    SecurityToken token = sts.requestSecurityToken("appliesTo", "http://docs.oasis-open.org/ws-sx/ws-trust/200512/RST/SCT", "/Issue", null);

    return sts;
}

Но я получаю это исключение обратно:

org.apache.cxf. Перехватчик. Ошибка: не удалось отправить сообщение. в org.apache.cxf.interceptor.MessageSenderInterceptor $ MessageSenderEndingInterceptor.handleMessage (MessageSenderInterceptor.java:67) в org.apache.cxf.phase.PhaseInterceptorChain.doIntercept (PhaseInterceptorCape.limp.lig.lig.lig.lig.in_g_t_t_t_t_t_t_t_t_t_t_t_t_t_t_).doInvoke (ClientImpl.java:530) в org.apache.cxf.endpoint.ClientImpl.invoke (ClientImpl.java:441) в org.apache.cxf.endpoint.ClientImpl.invoke (ClientImpl.java:356) в орг. apache.cxf.endpoint.ClientImpl.invoke (ClientImpl.java:314) в org.apache.cxf.ws.security.trust.AbstractSTSClient.issue (AbstractSTSClient.java:876) ....

Это не очень помогает, кто-то может указать, что здесь не так?

Другое дело, что когда я вижу, что сообщение выходит в Wireshark, SOAPBody в SOAPEnvelope пуст. Я не понимаю, как это пусто, когда я отлаживаю его объект записи в AbstractSTSClient, он имеет фактическое сообщение в нем.

...