2017-02-02 2 views
3

Я разрабатываю собственное мобильное приложение на Android, которое должно взаимодействовать с сервером с реализацией oAuth2.0 и с использованием библиотеки Google AppAuth, как объяснено here.Предоставляет ли URI Redirect безопасность в реализации OAuth для собственного мобильного приложения?

1) В чем заключается цель перенаправления URI, кроме как получить код авторизации/токен доступа к нашему приложению. Поскольку URI-редирект, указанный в запросе авторизации, должен быть таким же, как и тот, который зарегистрирован в консоли Google API, является ли он также средством защиты, которое элемент управления возвращается только в приложение, зарегистрированное в Google и нигде?

2) Поскольку я получаю токен доступа и обновляю токен в мобильном приложении и сохраняю его на мобильных устройствах (как показано в примере codelabs), что делать, если кто-то получает мои данные о токере обновления, идентификаторе клиента и перенаправлении URI. Может ли кто-нибудь получить доступ к моему серверу, используя эти данные на своем собственном устройстве?

ответ

2

1) В чем заключается цель перенаправления URI, кроме как получить авторизационный код/​​токен доступа к нашему приложению.

Как вы сказали, что большинство ВПЛО использовать белый список URI переадресации, связанный с определенным идентификатором клиента для того, чтобы ограничить, где коды и маркеры могут быть отправлены, в качестве первой линии защиты от маркеров кражи. Это хорошо работает для Интернета, где https перенаправляет URI, по крайней мере, предоставляют некоторые основные меры предосторожности против подмены.

До недавнего времени URI с перенаправлением https были плохими для родных приложений. Android M представил App Links, что позволяет приложениям требовать от властей https способом, который не может быть захвачен другими вредоносными приложениями. Альтернативный метод, PKCE, обеспечивает немного более слабую защиту, но будет работать на любой версии Android. Однако PKCE требует поддержки с вашей конечной точки авторизации.

2) если кто-то завладеет моими данными токена обновления [...] Может ли кто-нибудь получить доступ к моему серверу, используя эти данные на своем собственном устройстве?

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

Выполняется работа по стандарту token channel binding, где токены могут использоваться только в сочетании с асимметричной парой ключей, которая генерируется и хранится в аппаратном криптовом модуле на устройстве. Кража частного ключа из таких модулей очень сложно, гораздо больше, чем просто пытаться украсть сами токены.

Я бы рекомендовал прочитать OAuth2 for Native Apps для обзора текущих рекомендаций. Чтобы использовать OAuth2 в вашем приложении, я бы рекомендовал использовать библиотеку OpenID AppAuth. Отказ от ответственности: Я ведущий разработчик AppAuth.