2011-08-16 10 views
5

Java Webサービスでは、別のメソッドを別のユーザーに公開することはできますか?Java Webサービス - ユーザーによるWebメソッドの保護

たとえば、私のWebサービスには10のメソッドがありますが、ユーザーAが1つまたは2つのメソッドのみにアクセスできるようにしたいのですが、どうすればできますか?

+0

これはREST Webサービスですか? SOAPのもの? – ElenaT

+0

@ElenaTこれはSOAP Webサービスです。 –

答えて

1

ユーザーからメソッドを完全に隠すことはできないと思います。あなたができる唯一のことは、特定のユーザーに必要な情報だけを提供することです。私のアプリケーションでは、Design Patternを使用してこれを実装しました。私はそれを説明しようとします。

このロジックをwebservice以外のクラスで分けることができます。 2つのWebサービス(各userAccessモデルに1つ)を作成します。各Webサービスから分離されたロジックを呼び出します。

メソッド1〜10を含むCommonAクラスを作成したとします。 Webサービスを作成するForUserAには、CommonAのメソッド1と2を呼び出すメソッド1とメソッド2のみが含まれています。等々。

誰かがこれを行うためのよりよい方法を提案してくれれば、大いに喜ぶでしょう。

1

ウェブサービスが現在あなたのウェブサービスメソッドを呼び出しているかどうかを判断するには、何らかの認証が必要です。

両方ともSAOP & RESTはHTTPプロトコルを使用するため、セッションを使用できます。 クライアントが自分自身を認証したら、好きなWebメソッドへのアクセスを許可/拒否することができます。

ここでは、SOAPサービスの簡単な例を示します。

@Resource WebServiceContext wsContext; 

MessageContext mc = wsContext.getMessageContext(); 
HttpSession session = ((javax.servlet.http.HttpServletRequest)mc.get(MessageContext.SERVLET_REQUEST)).getSession(); 
String username = (String)session.getAttribute("username"); 
if(username.equals("userA") { 
    // Do your thing 
} else { 
    throw new WebServiceException("Not allowed to access this method."); 
} 
関連する問題