Java Webサービスでは、別のメソッドを別のユーザーに公開することはできますか?Java Webサービス - ユーザーによるWebメソッドの保護
たとえば、私のWebサービスには10のメソッドがありますが、ユーザーAが1つまたは2つのメソッドのみにアクセスできるようにしたいのですが、どうすればできますか?
Java Webサービスでは、別のメソッドを別のユーザーに公開することはできますか?Java Webサービス - ユーザーによるWebメソッドの保護
たとえば、私のWebサービスには10のメソッドがありますが、ユーザーAが1つまたは2つのメソッドのみにアクセスできるようにしたいのですが、どうすればできますか?
ユーザーからメソッドを完全に隠すことはできないと思います。あなたができる唯一のことは、特定のユーザーに必要な情報だけを提供することです。私のアプリケーションでは、Design Patternを使用してこれを実装しました。私はそれを説明しようとします。
このロジックをwebservice以外のクラスで分けることができます。 2つのWebサービス(各userAccessモデルに1つ)を作成します。各Webサービスから分離されたロジックを呼び出します。
メソッド1〜10を含むCommonAクラスを作成したとします。 Webサービスを作成するForUserAには、CommonAのメソッド1と2を呼び出すメソッド1とメソッド2のみが含まれています。等々。
誰かがこれを行うためのよりよい方法を提案してくれれば、大いに喜ぶでしょう。
ウェブサービスが現在あなたのウェブサービスメソッドを呼び出しているかどうかを判断するには、何らかの認証が必要です。
両方とも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.");
}
これはREST Webサービスですか? SOAPのもの? – ElenaT
@ElenaTこれはSOAP Webサービスです。 –