Конфигурация единого клиента OAuth 2.0 для веб- и мобильных приложений

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

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

Предлагаемый подход к решению этой проблемы предполагает настройку отдельных клиентов OAuth 2.0 для Android и iOS в дополнение к существующему веб-клиенту. Однако управление несколькими клиентами OAuth для одного и того же приложения кажется неэффективным и потенциально увеличивает сложность нашей системы.

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

Мой вопрос: позволит ли эта установка эффективно обойти необходимость в нескольких клиентах OAuth для разных платформ?

Любые идеи или советы по этому поводу будут очень признательны.

Спасибо

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
99
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

ВЕБ-КЛИЕНТЫ

Самое простое решение на мобильном устройстве — вызвать веб-приложение в системном браузере, а не использовать веб-просмотр:

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

Google и Apple предпочитают, чтобы вы предоставляли браузер для веб-приложений на мобильных устройствах и экономно использовали веб-просмотры.

МОБИЛЬНЫЕ КЛИЕНТЫ

Оптимальным решением в долгосрочной перспективе является повторная реализация веб-представлений как собственных представлений. Тогда ваше мобильное приложение будет отдельным клиентом OAuth, который реализует свой поток в соответствии с RFC 8252 и использует другую форму URI перенаправления.

Регистрировать разные клиенты OAuth для веб-платформ и мобильных платформ вполне нормально. Это не влечет за собой больших накладных расходов. Обе платформы имеют разные передовые практики. Решения обычно включают в себя приложения, вызывающие одни и те же API-интерфейсы, защищенные OAuth.

Однако поддерживать обе платформы и обеспечивать удобство взаимодействия с пользователем непросто, поскольку это требует некоторой фундаментальной работы.

Ответ принят как подходящий

Как отметил @Gary Archer, использование Google для входа в систему непосредственно из веб-просмотра запрещено Google, поскольку они утверждают, что текущий браузер небезопасен или что-то в этом роде. Однако преобразовать содержимое веб-просмотра в приложение для телефона было невозможно, поэтому мне пришлось искать обходной путь. В итоге я инициировал процесс входа в Google в веб-просмотре, но открыл всплывающее окно входа в Google в родном браузере. После того, как пользователь вводит свои учетные данные, он перенаправляется на частный сайт, где код клиента Google извлекается из параметров URL-адреса и отправляется в телефонное приложение с использованием универсальной ссылки. Затем телефонное приложение получает код, вводит его в веб-просмотр, где он обменивается, успешно регистрируя пользователя. Это работает для всех трех платформ (веб, iOS, Android) только с одним клиентом OAuth, что является долгожданным решением.

Другие вопросы по теме