3
我在實現JAX-WS Web服務的授權時遇到了問題。我正在開發一個Swing應用程序,該應用程序可以通過JAX-WS Web服務連接到Java EE應用程序。用戶可以使用Swing應用程序登錄到服務器,並可以從服務器下載用戶特定的數據。記錄的用戶不能下載屬於其他用戶的數據是非常重要的。JAX-WS Web Service的身份驗證和授權的正確方法是什麼?
我的問題是jaxwsContext.getUserPrincipal().getName()
返回「ANONYMOUS」。我在這個門戶上閱讀了類似的問題,但不幸的是它沒有幫助。
其實我有這樣的:
服務器端:
@Stateless
@TransactionManagement(TransactionManagementType.CONTAINER)
@SOAPBinding(style = SOAPBinding.Style.RPC)
@WebService
public class SampleWSEJB extends AbstractSampleEJB implements ISampleWSLocal, ISampleWSRemote {
@Resource
private WebServiceContext jaxwsContext;
public String getUsername() {
return username = jaxwsContext.getUserPrincipal().getName();
}
@Override
@WebMethod
public UserDataVO logInUser() {
return SampleServerServices.getInstance().logInUser(getEm(), this.getUsername());
}
...
...
}
客戶端:
我wsimport工具生成一些類(ImportedSampleWSEJB,UserDataVO等)
相關客戶代碼:
private static ImportedSampleWSEJB importedEJB;
public UserDataVO logInUser(String username, String password) {
Map<String, Object> requestContext = ((BindingProvider)ImportedSampleWSEJB.importedEJB).getRequestContext();
requestContext.put(BindingProvider.USERNAME_PROPERTY, username);
requestContext.put(BindingProvider.PASSWORD_PROPERTY, password);
return importedEJB.logInUser();
}
我使用「文件」作爲安全領域,並且我在glassfish 3.1中創建了一些測試用戶。
任何人有任何想法如何解決它?
這可能是相關的:http://stackoverflow.com/questions/10975070/how-to-enable-spring-security-for-apache-cxf-jax-ws。也看看Spring Security – amphibient