Связь android с web приложения посредством REST архитектуры. Часть 4 Безопасность для REST

5 (1)

В данной части пойдет речь о безопасности для REST приложений (Security for REST application).

В предыдущих частях (раз, два, три ) мы рассмотрели базовые принципы построения приложения которое общается с сервером посредством rest запросов. Но зачастую возникает ситуация при которой нам необходимо как то понять кому мы отправляем данные и можно ли ему получать эти данные в принципе. Как же сейчас обстоят дела с запросом и передачей данных. Дело в том все данные которые мы передаем они передаются в открытом виде. Если мы посмотрим трафик который идет по сети, то мы спокойно увидим наши запросы.

Полученный ответ от нашего сервера:

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

Для одного проекта мы применили базовую аутентификацию (Basic Authentication). Среди безопасности это не единственный метод и не самый надежный, но для конкретной задачи он весьма справлялся с поставленной на него задчей.

При данной аутентификации в запросе передается логин и пароль для идентификации запроса. Логин и пароль передаются по сети закодированным простым Base64. Данный способ может легко декодирован любым пользователем и поэтому для данного метода обязательно нужно использовать https протокол для передачи данных.

Для использование данной авторизации модифицируем наш адаптер для работы:


String userName = "Angelina";
String password = "MyPasswd";
final String credentials = userName+":"+password;
//создаем наш обект адаптера
restAdapter = new RestAdapter.Builder().
        setEndpoint(URL_API).
        setRequestInterceptor(new RequestInterceptor() {
            @Override
            public void intercept(RequestFacade request) {
                String string =  "Basic "+ Base64.encodeToString(
                        credentials.getBytes(),
                        Base64.CRLF
                );
                request.addHeader("Authorization",string);
            }
        })
        .build();

Если мы посмотрим на наш пакет, который передается то увидим что наш запрос подписан и мы понимаем от кого пришел запрос, и на основании этого разрешаем определяем ответные действие.  

Комментарий (0)

Войдите с помощью соцсетей:
или
введите свои данные: