2016-06-29 17 views
0

私は、EJB3.1がWildfly 8.2にWARとしてデプロイされたほぼ完成したWebプロジェクトを持っています。これは、フォーム認証(auth-method FORM)を使用して自己記述されたJAAS-realmによって保護されています。セキュアなEJB3.1-Webservice(JBoss Wildfly 8.2)

今、私は基本的には期待通りにWebサービスが動作しますが、今、私は、ユーザー名/パスワードによるWebサービスへのアクセスを保護したい問題を抱えている

@Stateless 
@WebService 
public class ProductImportWebservice { 
    @Resource 
    WebServiceContext wsContext; 

    [...] 

    @WebMethod 
    public Product createOrFind(String name) { 
     [...] 
    } 
} 

として定義されているEJB-Webサービスを追加したいです。 だから私は、JAAS認証で有効な役割である

@RolesAllowed("ADMIN") 

でWebサービスや@WebMethod注釈付き。 効果:SOAPクライアントは、応答が「許可されていない/認証されていません」を取得しますが、認証要求は取得されず、BASIC認証による試行は無視されます。 WebサービスのURLをweb.xmlのsecurity-constraintに追加すると、認証要求が出ますが、問題はフォームベースの認証だということです。これは、「通常の」SOAPクライアントでは使用できません:-(

具体的な質問は次のとおりです。Webサービスの基本認証アプリケーションの残りの部分のFORMベースの認証?私が見るであろう唯一の他の方法は、EARパッケージにWARパッケージを分割し、異なるウェブ・コンテキストでWebサービスを展開することである

答えて

1

具体的な質問は今ある:あり両方の方法 - BASIC Webサービスの認証とFORMベースの認証 残りのアプリケーションですか?

同じWebアプリケーションに対してFORMBASICの両方の認証を使用することはできません。

これを行う必要がある場合は、共有コードベースを使用して2つの別々のアプリケーションを作成します。

参考:

https://docs.oracle.com/javaee/7/tutorial/security-webtier002.htm#JEETT01227

のauth-methodサブ要素は Webアプリケーションの認証メカニズムを設定します。要素の内容は、NONE、BASIC、 DIGEST、FORM、またはCLIENT-CERTのいずれかでなければなりません。

+0

私は望んでいませんが、私はあなたが正しいと思います。 私は別の方法をとると思います:ユーザークレデンシャルでwebmethodパラメータを追加して自分でチェックしてください:-( – cljk

+0

ちょうど追加したいと思います:最後に、私は自分のウェブサービスをfunktion "login" login-process to HttpRequest.login - 基本的にJAAS-checkを保護されたメソッドで呼び出す... wsContext.isUserInRole(...)をチェックしてロールメンバーシップをチェックし、WS-Clientは単にhttp://stackoverflow.com/questions/14699114/jax-ws-client-maintain-session-cookies-across-multiple-services これはチャームのように機能し、プロジェクトを分割するよりはるかに少ない仕事でした。 – cljk

+0

@cljk JASPIC(標準であり、あなたが好きなように複数の認証者( 'ServerAuthModule's)を積み重ねることができます。しかし、サーブレットとJAX-WSの両方で使用するために設定するのは簡単ではないでしょう。 – Uux

関連する問題