2009-10-20 20 views
10

在我的WebService中,我需要記錄調用者的id,但wsContext.getUserPrincipal()返回null,即使用戶使用帶密碼認證的WS-Security進行了認證。根據JAX-WS 2.1的JavaDocs,WSContext.getUserPrincipal()應該只在用戶未被認證時返回null。WSContext.getUserPrincipal()返回null用於密碼摘要認證

我是否必須在安全處理程序中執行一些操作以將用戶主體設置爲WSContext?文檔似乎表明它是自動完成的。

我正在使用地鐵1.1堆棧(1.1.5我認爲)與Tomcat上的jax-ws 2.1.3堆棧。

+0

我想知道這是否現在工作。 在我過去的一個項目中,我們使用了WSContext.getUserPrincipal(),它正在工作。但是我們正在進行HTTP基本身份驗證。 – 2011-11-19 21:17:55

+0

地鐵1.1相當古老,也許地鐵1.4解決了這個問題。另一方面,你可以在這裏附加你所有的WsContext轉儲嗎? – korifey 2011-12-28 12:07:18

回答

1

嘗試對wsContext.getMessageContext()。entrySet()進行迭代並顯示值,有時它們存在但由於某種原因無法通過getUserPrincipal()方法檢索。

在這種情況下,直接從那裏獲取校長並留下評論給未來您,這是不是很便攜。

+0

+1「爲未來留下評論......」 – 2012-02-06 23:23:07