Autenticación JAX-WS y BASIC, cuando los nombres de usuario y las contraseñas están en una base de datos
Soy nuevo en JAX-WS y hay algo que no entiendo.
Hay un montón de tutoriales disponibles sobre cómo configurar la seguridad de JAX-WS, pero en casi todos los casos BindingProvider.USERNAME_PROPERTY y BindingProvider.PASSWORD_PROPERTY se almacenan en algún archivo .xml (según el contenedor que creo) - están "codificados" es decir. Y eso es lo que no entiendo. ¿Cómo puedo autenticar un cliente de servicio web comparando BindingProvider.USERNAME_PROPERTY y BindingProvider.PASSWORD_PROPERTY con un nombre de usuario y contraseña que están en una base de datos? Intenté establecer BindingProvider.USERNAME_PROPERTY y BindingProvider.PASSWORD_PROPERTY en el lado del cliente de esta manera:
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 recuperando así:
@Resource
WebServiceContext wsContext;
@WebMethod
public void someFunctionCall() {
MessageContext mc = wsContext.getMessageContext();
mc.get(BindingProvider.USERNAME_PROPERTY);
mc.get(BindingProvider.PASSWORD_PROPERTY);
}
Pero siempre obtengo un valor nulo, no configuré nada en xml, el servicio web funciona bien, excepto que no puedo obtener esas variables :(
Estoy corriendo tanto en java 1.6, tomcat 6 yJAX-WS.
Cualquier ayuda con la autenticación de usuarios con contraseñas de una base de datos es muy apreciada, Gracias.