Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> jax-ws & ws-security 
:(
    Опции темы
persten
Дата 17.11.2011, 11:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 11.7.2007

Репутация: нет
Всего: нет



делаю веб-сервис на jax-ws в netbeans:
привожу упрощенный сервис с одним методом:
MyTemplateService.java
Код

package ws;

import javax.jws.WebService;
import javax.jws.WebParam;

@WebService(serviceName = "MyTemplateService", portName="MyTemplateServicePort")
public class MyTemplateService {
    
    public String Start(@WebParam(name = "inParam") String inParam) {
        return "RESPONSE FROM WEB-SERVICE: " + inParam;
    }
}


сейчас заказчик поставил задачу сделать утентификацию при помощи заголовков в soap-сообщении:

<wsse:Security soap:mustUnderstand="1">
  <wsse:UsernameToken
    xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
    wsu:Id="UsernameToken-1">
        <wsse:Username>USERNAME</wsse:Username>
        <wsse:Password
        Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">PASSWORD</wsse:Password>
        <wsse:Nonce>ipFoznGlUEODSYQc9UeTLA==</wsse:Nonce>
        <wsu:Created>2011-11-01T08:11:01Z</wsu:Created>
  </wsse:UsernameToken>
</wsse:Security>

на клиенте веб-сервиса научился их добавлять при помощи реализации SOAPHandler и HandlerResolver:
AuthentificationHeaderHandler.java
Код

public class AuthentificationHeaderHandler implements SOAPHandler<SOAPMessageContext> {
    @Override
    public boolean handleMessage(SOAPMessageContext smc) {

        Boolean outboundProperty = (Boolean) smc.get(MessageContext.MESSAGE_OUTBOUND_PROPERTY);
        
        // LOGIN AND PASSWORD ADD TO HEADER
        if (outboundProperty.booleanValue()) {

            //SOAPMessage message = smc.getMessage();

            try {

                SOAPEnvelope envelope = smc.getMessage().getSOAPPart().getEnvelope();
                SOAPHeader header = envelope.addHeader();

                SOAPElement authentification =
                        header.addChildElement("Authentification", "wsse");
                
                SOAPElement username =
                        authentification.addChildElement("Username", "wsse");
                username.addTextNode("TestUser");
                
                SOAPElement password =
                        authentification.addChildElement("Password", "wsse");
                password.addTextNode("TestPassword");
                
                SOAPElement security =
                        header.addChildElement("Security", "wsse", "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd");

                SOAPElement usernameToken =
                        security.addChildElement("UsernameToken", "wsse");
                usernameToken.addAttribute(new QName("xmlns:wsu"), "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd");

                SOAPElement username =
                        usernameToken.addChildElement("Username", "wsse");
                username.addTextNode("TestUser");

                SOAPElement password =
                        usernameToken.addChildElement("Password", "wsse");
                password.setAttribute("Type", "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText");
                password.addTextNode("TestPassword");
                
                
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        return outboundProperty;

    }
}


AuthentificationHeaderHandlerResolver.java
Код

public class AuthentificationHeaderHandlerResolver implements HandlerResolver {
    
public List<Handler> getHandlerChain(PortInfo portInfo) {
      List<Handler> handlerChain = new ArrayList<Handler>();

      AuthentificationHeaderHandler hh = new AuthentificationHeaderHandler();

      handlerChain.add(hh);

      return handlerChain;
   }
}



Код

....
MyTemplateService_Service service = new MyTemplateService_Service();
AuthentificationHeaderHandlerResolver handlerResolver = new AuthentificationHeaderHandlerResolver();
service.setHandlerResolver(handlerResolver);
MyTemplateService port = service.getMyTemplateServicePort();
....



покопал в инете понял что это ws-security, понял что это можно реализовать с помощью Apache WSS4J 
скачал wss4j, но дальше никак не пойму что делать? 

помогите плиз - бьюсь не один день
какие конфиги создавать? как и что подключить к веб-сервису, чтобы обрабатывались и проверялись эти заголовки?
кстати может кто подскажет - что на клиенте сделать - может можно использовать что то попроще и вообще правильео ли я делаю, что сам добавляю это все в заголовки, а не через какую нибудь библиотеку????

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.0606 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.