PasswordCallback в CXF - PullRequest
       36

PasswordCallback в CXF

2 голосов
/ 27 февраля 2011

Я разрабатываю клиент веб-сервиса для существующего веб-сервиса.Я использую Apache CXF 2.2.Служба требует безопасности с именем пользователя и паролем в виде простого текста, который я настроил следующим образом:

<bean id="myPasswordCallback"
    class="com.kraemer_imd.mobilized.m2m_adapter.ClientPasswordCallback"/>

<jaxws:client id="m2mClientService"
              serviceClass="de.vodafone.easypu.ws.EasyPUOrderServicePortType"
              address="http://m2m.vodafone.de/speasy/services/EasyPUOrderService"
              bindingId="http://www.w3.org/2003/05/soap/bindings/HTTP/">

  <jaxws:outInterceptors>
    <bean class="org.apache.cxf.ws.security.wss4j.WSS4JOutInterceptor">
      <constructor-arg>
        <map>
            <entry key="action" value="UsernameToken Timestamp"/>
          <entry key="passwordType" value="PasswordText"/>
          <entry key="user" value="myusername"/>
          <entry key="passwordCallbackRef">
            <ref bean="myPasswordCallback"/>
          </entry>
        </map>
      </constructor-arg>
    </bean>
  </jaxws:outInterceptors>

</jaxws:client>

Это работает довольно хорошо.Но я не понимал, почему я должен предоставить пароль через обработчик обратного вызова, а не просто предоставить его через конфигурацию.В документации сказано, что это по соображениям безопасности, но я не понимаю, почему это должно быть более безопасно, если иметь обработчик обратного вызова, который читает его из файла свойств (или, что еще хуже, он жестко закодирован в обратном вызове).

Так, может кто-нибудь объяснить это мне?Может быть, обратный вызов предназначен для некоторых магических вещей, которые я пропустил ..

Спасибо, Мишель

Ответы [ 2 ]

3 голосов
/ 27 февраля 2011

Обратный вызов пароля обеспечивается Apache CXF как механизм для клиентского приложения, чтобы получить учетные данные для целевого веб-сервиса, который во время выполнения, вероятно, будет храниться в базе данных, полях конфигурации, LDAP или некотором другом хранилище. Этот хук обратного вызова обеспечивает гибкость приложения для извлечения учетных данных из конкретной конфигурации приложения.

1 голос
/ 13 апреля 2011

Если пароль хранится в текстовом виде в конфигурации, тогда этот подход может не дать вам никакой дополнительной безопасности.

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

Лучше хранить зашифрованный пароль в конфигурации. В этом случае вам понадобится код, который расшифрует этот пароль перед его использованием. В этом сценарии вы получите ответный пароль.

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