3

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 でテスト ユーザーを作成しました。

誰でもそれを修正する方法を知っていますか?

4

1 に答える 1

0

基本認証 (http ヘッダー) を使用するか、UserName トークン (WS-Security の一部) を使用できます。ユーザー名トークンは、http ヘッダーではなく SOAP ヘッダーに入れられます。

于 2013-05-10T04:52:18.240 に答える