Я новичок в 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<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);
}
Но я всегда получаю null, я ничего не настраивал в xml, веб-сервис работает просто отлично, за исключением того, что я не могу получить эти переменные: (
Я запускаю оба на java 1.6, tomcat 6 и JAX-WS.
Приветствуется любая помощь с аутентификацией пользователей с паролями из базы данных, Спасибо.