2017-04-03 4 views
0

Ich verwende eine Reihe von Webdiensten, um mit SAP zu kommunizieren. Die Dienste wurden mithilfe eines Assistenten in RAD generiert. Eine Standardanmeldung wurde in den WS-Bindungen der Bereitstellungsbeschreibung definiert.Wie kann die Authentifizierung beim Aufruf eines bestimmten Web-Service überschrieben werden?

Das SAP-Team möchte jetzt, dass ich einen bestimmten Dienst unter Verwendung der Login-Daten des aktuellen Benutzers anrufe und das Standard-Login nicht verwende. Der Benutzer wird aufgefordert, die Anmeldedaten einzugeben, und diese werden in der Sitzung gespeichert.

Ich hatte gedacht, dass ich javax.security.auth.callback.CallbackHandler verwenden muss, aber ich kann nicht sofort sehen, wie auf die Sitzung des Benutzers zuzugreifen.

Ich könnte die SOAP-Anfrage von Hand erstellen und die Authentifizierung selbst einstellen, aber ich würde lieber den Assistenten für alle Dienste verwenden.

Wie kann die Authentifizierung eines Webdienstes zur Laufzeit am besten überschrieben werden?

Antwort

0

Dies ist, was ich suchte: https://www.ibm.com/support/knowledgecenter/en/SSAW57_8.5.5/com.ibm.websphere.nd.iseries.doc/ae/twbs_confighttpbasicauthprog.html

Properties prop = new Properties(); 
InitialContext ctx = new InitialContext(prop); 
Service service = (Service)ctx.lookup("java:comp/env/service/StockQuoteService"); 
QName portQname = new QName("http://httpchannel.test.wsfvt.ws.ibm.com", "StockQuoteHttp"); 
StockQuote sq = (StockQuote)service.getPort(portQname, StockQuote.class); 
((javax.xml.rpc.Stub) sq)._setProperty(javax.xml.rpc.Stub.USERNAME_PROPERTY, "myUser"); 
((javax.xml.rpc.Stub) sq)._setProperty(javax.xml.rpc.Stub.PASSWORD_PROPERTY, "myPwd"); 
Verwandte Themen