JAX-WS et l'authentification de BASE, lorsque les noms d'utilisateur et mots de passe dans une base de données
Je suis nouveau sur JAX-WS et il y a une chose que je ne comprends pas.
Il y a une tonne de tutoriels disponibles sur la façon de configurer JAX-WS de sécurité, mais dans presque tous les cas BindingProvider.USERNAME_PROPERTY et BindingProvider.PASSWORD_PROPERTY sont stockés dans quelques .fichier xml(selon le conteneur, je crois) - ils sont "codés en dur" qui est. Et c'est ce que je ne comprends pas. Comment authentifier un client de service web en comparant BindingProvider.USERNAME_PROPERTY et BindingProvider.PASSWORD_PROPERTY avec un nom d'utilisateur et mot de passe dans une base de données? J'ai essayé de réglage BindingProvider.USERNAME_PROPERTY et BindingProvider.PASSWORD_PROPERTY sur le côté client comme ceci:
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();
Et puis, sur le côté serveur de la récupération comme ceci:
@Resource
WebServiceContext wsContext;
@WebMethod
public void someFunctionCall() {
MessageContext mc = wsContext.getMessageContext();
mc.get(BindingProvider.USERNAME_PROPERTY);
mc.get(BindingProvider.PASSWORD_PROPERTY);
}
Mais j'ai toujours été nulle, je n'ai pas de configurer quoi que ce soit dans le xml, web service fonctionne très bien, sauf que je ne peux pas obtenir ces variables 🙁
Je suis en cours d'exécution à la fois sur la version 1.6 de java, tomcat 6 et JAX-WS.
Aucune aide avec l'authentification des utilisateurs avec des mots de passe à partir d'une base de données est grandement appréciée,
Merci.
- J'ai aussi essayé de vérifier pour BindingProvider.USERNAME_PROPERTY dans un SOAPHandler, toujours null.
Vous devez vous connecter pour publier un commentaire.
Je pense que vous êtes à la recherche pour JAX-WS authentification au niveau de l'application, pas de HTTP de base au niveau du serveur. Voir l'exemple complet :
Authentification de l'Application avec JAX-WS
Sur le client de service web site, il suffit de mettre votre “nom d'utilisateur” et “mot de passe” dans la tête de la demande.
Sur le serveur de service web site, obtenez l'en-tête de requête de paramètres via WebServiceContext.
BindingProvider.USERNAME_PROPERTY et BindingProvider.PASSWORD_PROPERTY correspondent à l'Authentification HTTP de Base mécanisme d'activer le processus d'authentification au niveau HTTP, et non à l'application, ni de servlet niveau.
En gros, seul le serveur HTTP permettra de connaître le nom d'utilisateur et le mot de passe (et éventuellement de l'application en fonction de l'adresse HTTP/serveur d'application de la spécification, par exemple avec Apache/PHP).
Avec Tomcat/Java, ajouter une connexion config de BASE dans votre web.xml et appropriée à la sécurité de contrainte/sécurité-roles (rôles qui seront ensuite associées à des utilisateurs/groupes d'utilisateurs réel).
Ensuite, branchez le domaine à un serveur HTTP (ou serveur d'application) de niveau avec l'utilisateur approprié du référentiel. Pour tomcat, vous pouvez regarder JAASRealm, JDBCRealm ou DataSourceRealm qui peuvent répondre à vos besoins.
http://tomcat.apache.org/tomcat-6.0-doc/realm-howto.html
J'ai eu le même problème et trouvé la solution ici :
http://www.mastertheboss.com/web-interfaces/336-jax-ws-basic-authentication.html?start=1
bonne chance
Pour un exemple d'utilisation à la fois, l'authentification sur le niveau d'application et l'Authentification HTTP de Base voir un de mes postes précédents.
J'ai été face à face à une situation similaire, je dois fournir à mon WS: nom d'utilisateur, Mot de passe et WSS Type de Mot de passe.
J'ai d'abord été à l'aide de la "Http Basic Auth" (comme @ahoge), j'ai essayé d'utiliser le @Philipp-Dev 's réf. trop. Je n'ai pas eu un succès de la solution.
Après un peu de profondeur de recherche sur google, j'ai trouvé ce post:
https://stackoverflow.com/a/3117841/1223901
Et il y avait mon problème solution
J'espère que cela peut aider quelqu'un d'autre, comme une aide pour moi.
Rgds,
iVieL
Dans votre client de SAVON de gestionnaire, vous devez définir le javax.xml.ws.de sécurité.auth.nom d'utilisateur et javax.xml.ws.de sécurité.auth.propriété de mot de passe comme suit: