私は、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サービスを展開することである
私は望んでいませんが、私はあなたが正しいと思います。 私は別の方法をとると思います:ユーザークレデンシャルでwebmethodパラメータを追加して自分でチェックしてください:-( – cljk
ちょうど追加したいと思います:最後に、私は自分のウェブサービスを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
@cljk JASPIC(標準であり、あなたが好きなように複数の認証者( 'ServerAuthModule's)を積み重ねることができます。しかし、サーブレットとJAX-WSの両方で使用するために設定するのは簡単ではないでしょう。 – Uux