[Java] Implementierungsmethoden-Memo zum Festlegen des WS-Security-Benutzernamens-Tokens im SOAP-Stub von axis2

Ich habe nach verschiedenen Dingen gesucht, aber es gab nur einen Hinweis auf die spezifische Implementierungsmethode in StackOverFlow (und auf Englisch ...), also habe ich mir Notizen zur Erinnerung gemacht.

Die Ausstellung von StackOverFlow ist wie folgt StackOverFlow:https://stackoverflow.com/questions/7910776/adding-user-password-to-soapheader-for-webservice-client-call-with-axis2 Autor: https://stackoverflow.com/users/957076/shiv-gopal (Diese Person scheint es selbst gelöst zu haben (ich löse das Problem selbst) ...

Fast wie die Antwort dieser Person, aber wenn Sie es so machen, wie es ist, tritt ein Fehler auf, so dass ich zusätzliche Korrekturen vornehme, wie im Kommentarteil unten beschrieben.


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 als erstes Argument des Arguments QName von createOMElement-Geben Sie den Sicherheits-URI an
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 als erstes Argument des Arguments QName von createOMElement-Geben Sie den Sicherheits-URI an
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);

Als zusätzlicher Korrekturpunkt wird in der Antwort von StackOverFlow im ersten Argument beim Erstellen eines QName-Objekts ein leeres Zeichen angegeben. In diesem Fall wird jedoch zur Laufzeit "java.lang.IllegalArgumentException: Ein vorangestelltes Element mit einem leeren Namespace kann nicht erstellt werden" angezeigt. Auftreten. Daher wird der WS-Sicherheits-URI explizit angegeben. Ich denke, es ist wahrscheinlich ein Fehler in dieser Antwort, aber ... ich frage mich, ob es eine Möglichkeit gibt, dies zu tun.

Legen Sie außerdem Ihren eigenen Benutzer und Ihr eigenes Passwort in omuserName.setText ("myusername") und omPassword.setText ("mypassword") fest.

In Bezug auf die "Spezifikationen" und "Konzepte" von WS-Security werden Sie, wenn Sie danach suchen, diese fair finden, aber Sie können eine konkrete Implementierungsmethode nicht so oft finden, und selbst wenn Sie sie finden, scheint die Version von aixs anders zu sein, sodass Sie sich frei fühlen können, den Header festzulegen Ich war in Schwierigkeiten, weil ich es nicht hatte. aixs2 Stub </ A> ist Service Client Bis auf den Abruf ist alles geschützt, und von außen kann fast nichts getan werden. <A HREF = "http://axis.apache.org/axis/java/apiDocs/org/apache/axis/client/Stub. Es scheint, dass der Freiheitsgrad im Vergleich zu HTML "target =" _ blank "> axis1 Stub </ A> sehr begrenzt ist. Wie diesmal fiel es mir schwer, den Header zu setzen.

Recommended Posts

[Java] Implementierungsmethoden-Memo zum Festlegen des WS-Security-Benutzernamens-Tokens im SOAP-Stub von axis2
[Java] Ist es nicht erforderlich, "Identität" bei der Implementierung der equals () -Methode zu überprüfen?
Java-Implementierung von Tri-Tree
Die in /lib/calendars.properties von Java jre festgelegte Millisekunde ist UTC
Implementierung einer ähnlichen Funktion in Java
[Java] Übergeben Sie Argumente an den Konstruktor in Mockito / Set default call to method an callRealMethod
So machen Sie den Einzug zu zwei Einzelbyte-Leerzeichen in der JAXB-Implementierung des JDK
Verwenden Sie den statischen Initialisierungsblock, um die Liste / den Satz statischer Felder in Java zu initialisieren
Vergleich der Thread-Implementierungsmethoden in Java und der Lambda-Ausdrucksmethode
Implementierung der Klonmethode für Java Record
Implementierung von DBlayer in Java (RDB, MySQL)
[Bestellmethode] Legen Sie die Reihenfolge der Daten in Rails fest
Implementierungsnotiz für SKStoreReviewController in der Swift-Benutzeroberfläche von iOS14
Methodenname der Methodenkette in Java Builder + α
Zusammenfassung der Verwendung des im IE festgelegten Proxy-Sets bei der Verbindung mit Java
Zusammenfassung der Implementierung von Standardargumenten in Java