Soy nuevo en JAX-WS y hay algo que no entiendo.JAX-WS y autenticación BASIC, cuando los nombres de usuario y las contraseñas están en una base de datos
Hay una tonelada de tutoriales disponibles sobre cómo configurar la seguridad JAX-WS, pero en casi todos los casos BindingProvider.USERNAME_PROPERTY y BindingProvider.PASSWORD_PROPERTY se almacenan en algún archivo .xml (dependiendo del contenedor en el que creo): están "codificados" eso es. Y eso es lo que no entiendo ¿Cómo puedo autenticar un cliente del servicio web comparando BindingProvider.USERNAME_PROPERTY y BindingProvider.PASSWORD_PROPERTY con un nombre de usuario y una contraseña que están en una base de datos? He intentado establecer BindingProvider.USERNAME_PROPERTY y BindingProvider.PASSWORD_PROPERTY en el lado del cliente como esto:
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();
Y luego, en el lado del servidor de la recuperación de la siguiente manera:
@Resource
WebServiceContext wsContext;
@WebMethod
public void someFunctionCall() {
MessageContext mc = wsContext.getMessageContext();
mc.get(BindingProvider.USERNAME_PROPERTY);
mc.get(BindingProvider.PASSWORD_PROPERTY);
}
Pero siempre consigo nula, yo no 't instalar nada en XML, servicios web funciona bien, excepto que no puedo conseguir esas variables :(
estoy ejecutan tanto en java 1.6, Tomcat 6 y JAX-WS.
Cualquier ayuda con la autenticación de usuarios con contraseñas desde una base de datos es muy apreciada, Gracias.
También he probado la comprobación de BindingProvider.USERNAME_PROPERTY en un SOAPHandler, siendo nula. – ahoge