2017-04-03 46 views
0

我使用一些Web服務與SAP進行通信。這些服務是使用RAD中的嚮導生成的。在部署描述的WS綁定中定義了標準登錄。如何在調用一個特定的Web服務時覆蓋身份驗證?

SAP團隊現在希望我使用當前用戶的登錄詳細信息調用一個特定服務,而不是使用標準登錄。系統會提示用戶輸入登錄詳細信息,並將這些信息存儲在會話中。

我以爲我需要使用javax.security.auth.callback.CallbackHandler但我不能立即看到如何訪問用戶的會話。

我可以手動創建SOAP請求並自己設置身份驗證,但我寧願使用嚮導來處理所有服務。

在運行時重寫Web服務的身份驗證的最佳方式是什麼?

回答

0

這就是我一直在尋找: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");