Интеграция oauth2 с собственным (iOS / Android) мобильным приложением

Мне нужно интегрировать OAuth2 в собственное приложение для iOS и Android. Я изучал OAuth2 и мобильные приложения и нашел эту документацию -API Google - Использование OAuth 2.0 для установленных приложений

Приведенная выше документация в основном подробно описывает, как использовать конечную точку Goolge OAuth 2.0 в мобильных приложениях.

Вот что говорится в документе:

При регистрации приложения вы указываете, что приложение является Установленным приложением. Это приводит к другому значению параметра redirect_uri.Client_id и client_secret, полученные при регистрации, встроены в исходный код вашего приложения. В этом контексте client_secret, очевидно, не рассматривается как секрет.Код авторизации может быть возвращен вашему приложению в строке заголовка браузера или наhttp://localhost порт в строке запроса.

Позволять'Например, на смартфоне пользователя установлено 2 приложения.

App1 - законное приложение, использующее конечную точку Google OAuth2.0

App2 - вредоносное приложение

На самом деле я не уверен, является ли вышеописанный метод интеграции / использования конечной точки OAuth2.0 в собственном мобильном приложении небезопасным или я что-то упустил. Вот мои вопросы -

Redirect_uri может бытьhttp://localhost URL и может содержать любой номер порта. Номер порта не является частью начальной конфигурации API и, следовательно, это может быть любой допустимый номер порта. Кроме того, client_id (в любом случае не должен быть секретом) и client_secret не являются действительно секретными, поскольку они встроены в исходный код мобильного приложения.

Используя вышеуказанные условия, неt следующая возможность -

Пользователь запускает приложение 2App2 перенаправляет пользователя на конечную точку Google OAuth2.0, однако в запросе App2 включает client_id для App1 и номер локального порта, который прослушивает App2.Когда пользователь перенаправляется и аутентифицируется в конечной точке Google OAuth2.0, Google указывает пользователю, что "App1 (легитимное приложение) запрашивает доступ к Google API 's / data от имени пользователя это похоже на фишинговую атаку, так как пользователь может нажать «да», думая, что это App1, который запрашивает доступ.Google OAuth2.0 затем выдаст код авторизации для App2, а затем App2 может сделать следующий запрос, включая App1 's client_id и client_secret и получить access_token и refresh_token и продолжить доступ к данным пользователя из Google.Redirect_uri также может быть - urn: ietf: wg: oauth: 2.0: oob, что означает -

Это значение сигнализирует серверу авторизации Google, что код авторизации должен быть возвращен в строке заголовка браузера. Это полезно, когда клиент не может прослушивать порт HTTP без значительной конфигурации клиента. Приложения Windows обладают этой характеристикой.

Когда используется это значение, ваше приложение может почувствовать, что страница загружена, а заголовок HTML-страницы содержит код авторизации. Затем ваше приложение должно закрыть окно браузера, если вы хотите, чтобы пользователь никогда не видел страницу, содержащую код авторизации. Механизм для этого варьируется от платформы к платформе.

Вышеуказанное означает, что код авторизации возвращается в заголовке окна браузера.

Мой вопрос - может ли App2 также почувствовать, что страница загрузилась и захватить код авторизации, а затем использовать его (до App1) вместе с client_id и client_secret для получения access_token и refresh_token. Является ли экземпляр браузера глобальным, и любое приложение может его отслеживать, и приведенный выше сценарий атаки действителен, или экземпляр браузера каким-то образом специфичен для приложения, так что только App1 может воспринимать или отслеживать изменения?

Правильно ли мое понимание ИЛИ Я что-то упустил? Я пропускаю какие-либо меры по смягчению, которые смягчают вышеуказанные угрозы? ИЛИ Являются ли вышеуказанные риски действительными, но допустимыми, если мы находимся на платформе мобильной ОС?

Каков безопасный способ использования OAuth2.0 в мобильных приложениях? - Отображать код авторизации на странице браузера и вводить ли его вручную в приложении? И в этом случае экземпляр браузера является частным, так что другое приложение не может контролировать его и получить сам код авторизации, прежде чем пользователь введет его в допустимую апикацию?

Любая помощь приветствуется

Спасибо и С уважением,

Ответы на вопрос(2)

Ваш ответ на вопрос