Я плохо знаком с JAX-WS и существует вещь, которую я не понимаю.
Существует тонна учебных руководств, доступных о том, как настроить безопасность JAX-WS, но в в значительной степени всех случаях BindingProvider. USERNAME_PROPERTY и BindingProvider. PASSWORD_PROPERTY хранятся в некотором .xml файле (в зависимости от контейнера, которому я верю) - они - "hardcoded", который является. И это - то, что я не получаю. Как я могу аутентифицировать клиент веб-сервиса путем сравнения BindingProvider. USERNAME_PROPERTY и BindingProvider. PASSWORD_PROPERTY с именем пользователя и паролем это находится в базе данных? Я попробовал установку BindingProvider. USERNAME_PROPERTY и BindingProvider. PASSWORD_PROPERTY на стороне клиента как это:
ShopingCartService scs = new ShopingCartService(wsdlURL, name);
ShopingCart sc = scs.getShopingCartPort();
Map requestContext = ((BindingProvider)sc).getRequestContext();
requestContext.put(BindingProvider.USERNAME_PROPERTY, userName);
requestContext.put(BindingProvider.PASSWORD_PROPERTY, password);
sc.someFunctionCall();
И затем, на стороне сервера, получающей как это:
@Resource
WebServiceContext wsContext;
@WebMethod
public void someFunctionCall() {
MessageContext mc = wsContext.getMessageContext();
mc.get(BindingProvider.USERNAME_PROPERTY);
mc.get(BindingProvider.PASSWORD_PROPERTY);
}
Но я всегда становлюсь пустым, я ничего не настраивал в xml, веб-сервис работает просто великолепно, кроме я не могу получить те переменные :(
Я работаю и на java 1.6, кот 6 и на JAX-WS.
Любая справка с проходящими проверку подлинности пользователями с паролями от базы данных значительно ценится, Спасибо.
BindingProvider.Username_Property и BindingProvider.Password_Property соответствуют основным механизму аутентификации HTTP, который включает аутентификацию Процесс на уровне HTTP и не на приложении, ни уровне сервлета.
В основном, только HTTP-сервер будет знать имя пользователя и пароль (и в конечном итоге приложение в соответствии с спецификацией HTTP / сервера приложений, таких с Apache / PHP). С Tomcat / Java добавьте базовый конфигурацию входа в систему в вашем web.xml и соответствующие ограничения на безопасность / роли безопасности (роли, которые будут позже связаны с пользователями / группами реальных пользователей).
<login-config>
<auth-method>BASIC</auth-method>
<realm-name>YourRealm</realm-name>
</login-config>
Затем подключите царство на уровне HTTP Server (или сервера приложений) с соответствующим репозиторий пользователя. Для Tomcat вы можете посмотреть на JaAsrealm, JDBCREALM или DataSourceLealm, который может удовлетворить ваши потребности.