ファイルパスを取得するために残りのWebサービスを使用しています。ここでは、追加のセキュリティを提供するためにセキュリティ コンテキストを使用しています。ログインしたユーザーは、Web サービス URL で指定されたユーザー名と同じでなければならないという検証を使用しました ( security check )。
しかし、サーバーから特別なファイルパスを取得するために使用される1人のユーザーがいるという特別なケースが1つあります。このユーザーを Web サービスの URL から渡すと、ログインしているユーザーと URL で指定されたユーザーが同じではないため、セキュリティ コンテキストの検証に引っかかります。
そのため、特別なユーザーをセキュリティ チェックから除外する方法は他にもあります。この問題を解決するために、web.xml で構成を指定できますか。
例えば
condition 1
logged-in user - xyz
web-service URL - 192.168.0.132/download.ws/xyz/fileid
passed in security checked.
と
condition 2
logged-in user - xyz
abc is valid and authorized user.
web-service URL - 192.168.0.132/download.ws/abc/fileid
failed in security checked.
URLからのユーザーがabcの場合は、セキュリティチェックで許可せずに通過させたいです。
これは、有効なユーザーを確認するための Web サービス コードです。
public String getCallerId(SecurityContext sc) {
// we always create a GenericPrincipal object in AuthService
GenericPrincipal userPrincipal = (GenericPrincipal) sc.getUserPrincipal();
String szUserEmailID= userPrincipal.getName();
return szUserEmailID;
}
public boolean authorizeRequest(SecurityContext osc, String szResourceID, String reqType) {
if( getCallerId(osc).equalsIgnoreCase(szResourceID)) // check for logged-in user and user specified in web-service url
return true;
return false;
}