RAD - Как добавить токен имени пользователя для JAX-WS в консоли администратора сервера приложений websphere - PullRequest
0 голосов
/ 05 марта 2019

Я создал веб-сервис с использованием JAX-WS и пытаюсь добавить безопасность Simple UsernameToken в веб-сервис.Приложение развернуто на Websphere 8.5.

Я нашел следующую ссылку, которая помогает добавить usernameToken из RAD -> вкладка Services довольно легко для веб-сервисов на основе JAX-RPC, но та же функция недоступно для веб-служб типа JAX-WS .

RAD - Как добавить маркер имени пользователя для JAX RPC в консоли администратора сервера приложений websphere

МожетКто-нибудь может помочь предложить некоторые аналогичные шаги или другое возможное простое решение для достижения того же для веб-сервисов JAX-WS?

    <Soapenv:Header>
    <wsse:Security soapenv: mustUnderstand="1"
        xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wsswssecurity-secext-1.0.xsd">
        <wsse:UsernameToken>
            <wsse:Username>user</wsse: Username>
            <wsse:Password
                Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wssusername-token-profile-1.0#PasswordText">paas</wsse: Password>
        </wsse:UsernameToken>
    </wsse:Security>
</soapenv:Header>

Спасибо.

1 Ответ

0 голосов
/ 10 апреля 2019

Наконец, мне удалось найти обходной путь для указанной выше проблемы. Его следующим образом:

После долгих поисков я наткнулся на концепцию Обработчик веб-службы , которая может быть вызвана для каждого запроса и ответа, которые либо получены, либо отправлены от поставщика веб-услуг соответственно.

Как настроить: 1. Создайте Java File SecurityHandler и вставьте в него следующий код:

public class SecurityHandler implements SOAPHandler<SOAPMessageContext>
{
    @Override
    public boolean handleMessage(SOAPMessageContext context)
    {
        boolean outbound = (Boolean)context.get(SOAPMessageContext.MESSAGE_OUTBOUND_PROPERTY);
        if(outbound) {
            //logic to handle a response
        }

        if (!outbound) {
            //logic to handle a request
        }

        return true;
    }

    @Override
    public boolean handleFault(SOAPMessageContext context) {
        return true;
    }

    @Override
    public void close(MessageContext context) {}

    @Override
    public Set<QName> getHeaders() {
        return Collections.emptySet();
    }

}
  1. Создайте файл XML с примером кода ниже:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <javaee:handler-chains xmlns:javaee="http://java.sun.com/xml/ns/javaee" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <javaee:handler-chain> <javaee:handler> <javaee:handler-class>your.package.path.SecurityHandler</javaee:handler-class> </javaee:handler> </javaee:handler-chain> </javaee:handler-chains>

  2. Чтобы активировать обработчик при каждом запросе или ответе на веб-службу, которую вы выставили, добавьте аннотацию в свой класс веб-службы следующим образом:


    @HandlerChain(file="/your/package/path/handler-chain.xml") 
    public class my web services {
        //methods or web-services to be exposed.
    }

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