Невозможно установить вызов кода PKCE с AppAuth отдельно от верификатора кода в меж-клиентской аутентификации Google

Связанный с этой проблемой и этим (setCodeVerifier) ​​API в AppAuth

Похоже, мы не можем установить только вызов кода отдельно и игнорировать часть верификатора кода потока кода проверки подлинности AppAuth, которая предотвращает следующий поток, включающий службу с мобильным приложением и связанный бэкэнд:

  1. Мобильное приложение запрашивает доступ к API бэкэнд-сервера
  2. Бэкэнд-сервер отрицает необходимость входа
  3. Внутренний сервер создает вызов кода PKCE и верификатор кода
  4. Внутренний сервер отправляет вызов кода (но не верификатор) мобильному приложению вместе с внутренним сервером Oauth2 clientId
  5. Мобильное приложение выполняет предоставление кода авторизации с помощью запроса кода, предоставляемого внутренним сервером и внутренним сервером clientId
  6. Мобильное приложение отправляет код авторизации обратно на бэкэнд-сервер (обратите внимание, что без верификатора еще никто не имеет всех частей для получения токенов доступа /id)
  7. Внутренний сервер теперь обменивается кодом авторизации с проверяющим код, который он знает только для маркеров доступа / идентификатора, и создает пользовательский сеанс на внутреннем сервере.
  8. Теперь токен доступа / идентификатора можно отправить обратно в мобильное приложение для использования с API Google, а также использовать для делегированного управления доступом к внутреннему серверу приложения. То есть. наше мобильное приложение для взаимодействия с внутренним сервером защищено с помощью того же токена доступа / идентификатора, который используется для защиты связи между нашим внутренним сервисом и серверами ресурсов Google.

Вышеуказанная проблема связанного с переполнением стека говорит, что PKCE не требуется в случае секретного клиента, использующего серверные части, но это все еще открывает мобильное приложение от перехвата ключа авторизации. Если я что-то упустил, разве предложенный выше поток не даст только бэкэнд-серверу возможность получать токены доступа / идентификатора, в то же время позволяя пользователю получить все преимущества Oauth2 в нативном приложении?

Кажется, что это невозможно с текущим API AppAuth или любыми другими библиотеками, которые я нашел где-либо. Я что-то пропустил? По сути, вы можете видеть мобильное приложение как интерфейс входа в Oauth2 для внутреннего сервера, который является настоящим клиентским приложением.

Заранее спасибо.

Для дальнейшего использования, свойства дизайна, которые я искал, которые привели меня к следующему:

  • Мобильное приложение, поддерживаемое серверным веб-сервером
  • Вход в Google Oauth2 с использованием кода авторизации
  • Защита кода авторизации через PKCE
  • Совместное использование токенов между клиентами (технически существует только один клиент, поэтому, я думаю, более правильно описать собственное мобильное приложение и серверную часть как своего рода двухкомпонентный клиент, который разделяет ответственность за поток проверки подлинности кода Oauth2 и результирующие токены)
  • Single ClientId (внутренний сервер)
  • Снятие необходимости в ClientSecret даже на бэкэнде

0 ответов

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