веб-сервис с использованием безопасности UserNameToken - PullRequest
0 голосов
/ 20 января 2009

Я пытаюсь решить проблему, которую мы имеем, используя Glassfish V2 для публикации простого веб-сервиса с использованием простого UserNameToken по соображениям безопасности. Так как мы использовали Netbeans 6.5 для архивирования, мы изучили этот урок .

Поэтому были сделаны следующие шаги: В нашей среде разработки мы установили диспетчер системного доступа Sun Java (TM) и можем управлять им через консоль администратора, а также через среду IDE Netbeans. Все хорошо. Пример из учебника сработал отлично, поэтому мы подумали, что можем двигаться дальше.

После изменения параметров безопасности для нашего веб-сервиса мы опубликовали это в нашей тестовой среде без установленных Netbeans.

После этого были выполнены следующие шаги:

  1. развертывание сервиса
  2. настроить область в Access Manager для IP-адреса
  3. настроить ожидаемого пользователя для доступа к веб-службе.

Когда наш партнер теперь обращается к веб-службе, фактический код веб-службы не доступен, и мы всегда обнаруживаем в журнале сервера, что заголовок безопасности не был понят.

Это сообщение мы получаем на сервере:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Header>
<wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" soapenv:mustUnderstand="1">
<wsu:Timestamp xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="Timestamp-10034404">
<wsu:Created>2009-01-19T16:33:38.537Z</wsu:Created>
<wsu:Expires>2009-01-19T16:34:08.537Z</wsu:Expires></wsu:Timestamp><wsse:UsernameToken xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="UsernameToken-10034094">
<wsse:Username>myUser</wsse:Username>
<wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">myPasswd</wsse:Password>
</wsse:UsernameToken>
</wsse:Security>
<wsa:MessageID soapenv:mustUnderstand="0">uuid:ecc3b150-e646-11dd-96e5-9f80a576275b</wsa:MessageID>
<wsa:To soapenv:mustUnderstand="0">http://62.154.241.166:8080/HTNGService/WebServiceForTrustService</wsa:To>
<wsa:Action soapenv:mustUnderstand="0">http://webservice.trustinternational.com/ws/services/Htng2ReservationService</wsa:Action>
<wsa:From xmlns="http://schemas.xmlsoap.org/ws/2004/08/addressing" soapenv:mustUnderstand="0">
<wsa:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</wsa:Address></wsa:From>
</soapenv:Header>
<soapenv:Body>
...
</soapenv:Body></soapenv:Envelope>

наш wsit.xml выглядит так:

<?xml version="1.0" encoding="UTF-8"?>
<definitions
xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" name="WebServiceForTrustService" targetNamespace="http://wstrust/" xmlns:tns="http://wstrust/" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsp1="http://www.w3.org/ns/ws-policy" xmlns:fi="http://java.sun.com/xml/ns/wsit/2006/09/policy/fastinfoset/service" xmlns:tcp="http://java.sun.com/xml/ns/wsit/2006/09/policy/soaptcp/service"
>

<message name="otaHotelResNotif"/>
<message name="otaHotelResNotifResponse"/>
<portType name="WebServiceForTrust">
<operation name="otaHotelResNotif">
<input message="tns:otaHotelResNotif"/>
<output message="tns:otaHotelResNotifResponse"/>
</operation>
</portType>
<binding name="WebServiceForTrustPortBinding" type="tns:WebServiceForTrust">
<wsp:PolicyReference URI="#WebServiceForTrustPortBindingPolicy"/>
<operation name="otaHotelResNotif">
<input/>
<output/>
</operation>
</binding>
<service name="WebServiceForTrustService">
<port name="WebServiceForTrustPort" binding="tns:WebServiceForTrustPortBinding"/>
</service>
<wsp:Policy wsu:Id="WebServiceForTrustPortBindingPolicy">
<wsp:ExactlyOne>
<wsp:All/>
</wsp:ExactlyOne>
</wsp:Policy>
</definitions>

Кто-нибудь знает, какая конфигурация здесь может отсутствовать?

Мы также поняли, что в IDE после включения защиты (AM security) был создан файл, созданный в файлах конфигурации / amserver с именем amconfig.xml.

Этот файл мы не можем найти на веб-сервере после развертывания службы, ни в * .war, ни в разделе addons / amserver или около того.

Файл внутренне выглядит так:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ns2:AMConfig xmlns:ns2="http://identity.netbeans.org/access_manager_config_1_0">
<ProviderConfig type="WSP" name="WebServiceForTrustService">
<SecurityMechanism uri="urn:sun:wss:security:null:UserNameToken-Plain"/>
</ProviderConfig>
</ns2:AMConfig>

, поскольку информация уже находится в sun-web.xml, который публикуется на сервере, я думаю, что это не должно быть проблемой, но может быть полезно для вас.

1 Ответ

0 голосов
/ 21 января 2009

, так как мы работали над вышеупомянутым здесь несколько новых вещей, даже если это не решено.

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

Если мы сконфигурируем, как клиент с удаленного компьютера, чтобы использовать тот же веб-сервис с той же информацией безопасности, мы обнаружим ту же ошибку, что и в нашем другом приложении.

Поэтому я предполагаю, что это как-то связано с настройками o Access Manager, но не знаю, какой именно.

Надеюсь, это поможет кому-нибудь мне помочь. Спасибо!

...