Sono nuovo di JAX-WS e c'è una cosa che non capisco.JAX-WS e autenticazione BASIC, quando i nomi utente e le password sono in un database
C'è un sacco di tutorial disponibili su come impostare la sicurezza JAX-WS, ma in quasi tutti i casi BindingProvider.USERNAME_PROPERTY e BindingProvider.PASSWORD_PROPERTY sono memorizzati in alcuni file .xml (a seconda del contenitore che credo) - essi sono "hardcoded" cioè. E questo è quello che non capisco. Come posso autenticare un client di servizi Web confrontando BindingProvider.USERNAME_PROPERTY e BindingProvider.PASSWORD_PROPERTY con un nome utente e una password contenuti in un database? Ho provato a installare BindingProvider.USERNAME_PROPERTY e BindingProvider.PASSWORD_PROPERTY sul lato client in questo modo:
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();
E poi, sul lato server recuperando in questo modo:
@Resource
WebServiceContext wsContext;
@WebMethod
public void someFunctionCall() {
MessageContext mc = wsContext.getMessageContext();
mc.get(BindingProvider.USERNAME_PROPERTY);
mc.get(BindingProvider.PASSWORD_PROPERTY);
}
Ma ho sempre trovato nulla, io didn 't istituito nulla in xml, web service funziona bene, tranne che non posso ottenere quelle variabili :(
sto correndo sia su Java 1.6, Tomcat 6 e JAX-WS.
Qualsiasi aiuto con l'autenticazione degli utenti con password da un database è molto apprezzato, Grazie.
Ho anche provato il controllo di BindingProvider.USERNAME_PROPERTY in un SOAPHandler, ancora nulla. – ahoge