как исключить специальных пользователей из проверки безопасности в веб-сервисе restful

Я использую остальную веб-службу для получения пути к файлу. Здесь я использую контекст безопасности для обеспечения дополнительной безопасности. Я использовал проверку того, что вошедший в систему пользователь должен совпадать с именем пользователя, указанным в URL-адресе веб-службы (проверка безопасности).

Но у меня есть один особый случай, когда у меня есть один пользователь, который используется для получения пути к специальным файлам с сервера. Если я передам этого пользователя из URL-адреса веб-службы, он попадет в проверку контекста безопасности, поскольку пользователь, вошедший в систему, и пользователь, указанный в URL-адресе, не совпадают.

Таким образом, есть любой другой способ исключить специального пользователя из проверки безопасности. Могу ли я указать некоторую конфигурацию в web.xml для решения этой проблемы.

e.g

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, затем разрешите его в проверке безопасности.

вот код веб-сервиса для проверки действительного пользователя

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; 
        }

person Kaustubh Khare    schedule 20.05.2015    source источник


Ответы (1)


Вы должны использовать роли и аннотации безопасности. https://blogs.oracle.com/swchan/entry/servlet_3_0_security_annotations

Также я не понимаю, почему имя пользователя является частью URL-адреса. Это не должно быть так. Вы знаете имя пользователя. URL-адрес должен быть одинаковым для всех пользователей и возвращать только соответствующие данные для текущего аутентифицированного пользователя. Таким образом, у вас не было бы этих проблем.

Затем вы можете разрешить следующее:

@RolesAllowed("StandardRole") 192.168.0.132/download.ws/fileid

@RolesAllowed("SuperUser") 192.168.0.132/download.ws/{special_path_pattern}/fileid

person Christian    schedule 20.05.2015