[Java] Mémo de méthode d'implémentation pour définir le jeton de nom d'utilisateur WS-Security dans SOAP Stub of axis2

J'ai recherché diverses choses, mais il n'y avait qu'un indice sur la méthode d'implémentation spécifique dans StackOverFlow (et en anglais ...), alors j'ai fait une note pour les rappels.

Les expositions de StackOverFlow sont les suivantes StackOverFlow:https://stackoverflow.com/questions/7910776/adding-user-password-to-soapheader-for-webservice-client-call-with-axis2 Auteur: https://stackoverflow.com/users/957076/shiv-gopal (Cette personne semble avoir résolu le problème par elle-même (je résous le problème moi-même) ...

Presque comme cette personne a répondu, mais si je l'ai fait tel quel, une erreur s'est produite, alors je fais des corrections supplémentaires comme décrit dans le commentaire ci-dessous.


OMFactory omFactory = OMAbstractFactory.getOMFactory();
OMElement omSecurityElement = omFactory.createOMElement(new QName( "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd", "Security", "wsse"), null);

OMElement omusertoken = omFactory.createOMElement(new QName("http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd", "UsernameToken", "wsu"), null);
//WS comme premier argument de l'argument QName de createOMElement-Spécifiez l'URI de sécurité
OMElement omuserName = omFactory.createOMElement(new QName("http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd", "Username", "wsse"), null);
omuserName.setText("myusername");
//WS comme premier argument de l'argument QName de createOMElement-Spécifiez l'URI de sécurité
OMElement omPassword = omFactory.createOMElement(new QName("http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd", "Password", "wsse"), null);
omPassword.addAttribute("Type","http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText",null );
omPassword.setText("mypassword");

omusertoken.addChild(omuserName);
omusertoken.addChild(omPassword);
omSecurityElement.addChild(omusertoken);
stub._getServiceClient().addHeader(omSecurityElement);

Comme point de correction supplémentaire, dans la réponse de StackOverFlow, un caractère vide est spécifié dans le premier argument lors de la création d'un objet QName, mais si tel est le cas, "java.lang.IllegalArgumentException: Impossible de créer un élément préfixé avec un espace de noms vide" apparaîtra à l'exécution. apparaître. Par conséquent, l'URI WS-Security est explicitement spécifié. Donc je pense que c'est probablement une erreur dans cette réponse, mais ... je me demande s'il y a un moyen de le faire.

Définissez également votre propre utilisateur et mot de passe dans omuserName.setText ("myusername"); et omPassword.setText ("mypassword");.

Concernant les "spécifications" et les "concepts" de WS-Security, si vous le recherchez, vous le trouverez équitablement, mais vous ne trouvez pas tellement de méthode d'implémentation concrète, et même si vous le trouvez, il semble que la version d'aixs soit différente, vous pouvez donc vous sentir libre de faire setHeader. J'avais des ennuis parce que je ne l'avais pas. aixs2 Stub est Service Client Tout est protégé sauf pour la récupération, et presque rien ne peut être fait de l'extérieur, <A HREF = "http://axis.apache.org/axis/java/apiDocs/org/apache/axis/client/Stub. Il semble que le degré de liberté soit très limité par rapport au html "target =" _ blank "> axis1 Stub . Comme cette fois, j'ai eu du mal à régler l'en-tête.

Recommended Posts

[Java] Mémo de méthode d'implémentation pour définir le jeton de nom d'utilisateur WS-Security dans SOAP Stub of axis2
[Java] Est-il inutile de vérifier "l'identité" dans l'implémentation de la méthode equals ()?
Implémentation Java de tri-tree
La milliseconde définie dans /lib/calendars.properties de Java jre est UTC
Implémentation d'une fonction similaire en Java
[Java] Passer des arguments au constructeur dans Mockito / Définir l'appel par défaut à la méthode à callRealMethod
Comment créer un retrait de deux espaces d'un octet dans l'implémentation JAXB du JDK
Utiliser un bloc d'initialisation statique pour initialiser la liste / l'ensemble de champs statiques en Java
Comparaison des méthodes d'implémentation de thread en Java et de la méthode d'expression lambda
Implémentation de la méthode de clonage pour Java Record
Implémentation de DBlayer en Java (RDB, MySQL)
[Order method] Définit l'ordre des données dans Rails
Mémo d'implémentation SKStoreReviewController dans l'interface utilisateur Swift d'iOS14
Nom de méthode de la chaîne de méthodes dans Java Builder + α
Résumé de l'utilisation du jeu de proxy dans IE lors de la connexion avec Java
Résumé de la mise en œuvre des arguments par défaut en Java