Я новичок в JAX-WS, и есть вещь, которую я не понимаю.
Существует множество учебных пособий по настройке безопасности JAX-WS, но почти во всех случаях BindingProvider.USERNAME_PROPERTY и BindingProvider.PASSWORD_PROPERTY хранятся в некоторых XML-файлах (в зависимости от контейнера, который я считаю) - они "жестко закодированный", то есть. И это то, что я не понимаю. Как я могу аутентифицировать клиента веб-сервиса, сравнивая BindingProvider.USERNAME_PROPERTY и BindingProvider.PASSWORD_PROPERTY с именем пользователя и паролем, которые находятся в базе данных? Я попытался установить BindingProvider.USERNAME_PROPERTY и BindingProvider.PASSWORD_PROPERTY на стороне клиента следующим образом:
ShopingCartService scs = new ShopingCartService(wsdlURL, name);
ShopingCart sc = scs.getShopingCartPort();
Map<String, Object> 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, Tomcat 6 и JAX-WS .
Любая помощь с аутентификацией пользователей с паролями из базы данных очень ценится,
Спасибо.