JAX-WS Web サービスの承認の実装に問題があります。JAX-WS Web サービスを介して Java EE アプリケーションに接続できる Swing アプリケーションを開発しています。ユーザーは Swing アプリケーションを使用してサーバーにログインし、サーバーからユーザー固有のデータをダウンロードできます。ログに記録されたユーザーが、他のユーザーに属するデータをダウンロードできないようにすることが重要です。
私の問題は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 でテスト ユーザーを作成しました。
誰でもそれを修正する方法を知っていますか?