GLM 4.5 Air

Django Google OAuth2: Как исправить блокировку тестового пользователя

Узнайте, почему Google OAuth2 блокирует владельцев проектов как тестовых пользователей, и изучите пошаговые решения для исправления проблем аутентификации в приложениях Django с использованием django-allauth.

Вопрос

Я создаю веб-приложение на Django с использованием allauth для аутентификации через OAuth2. Когда я пытаюсь войти через Google, меня блокирует сообщение о том, что могут использоваться только “тестовые пользователи” до завершения верификации. Однако я являюсь владельцем проекта Google Cloud, где я настроил учетные данные OAuth2, создал эти учетные данные, сгенерировал client ID и secret, и добавил их в мое Django-приложение. Я единственный пользователь, владелец проекта Google Cloud, и у меня есть только один набор учетных данных с тем же client ID и secret.

Почему меня блокируют как тестового пользователя, если я являюсь владельцем проекта? Я уже пробовал создавать новый проект с новыми учетными данными, но проблема сохраняется. Я также обнаружил, что тестовые пользователи настраиваются в разделе “аудитория” (audience), а не в “согласии OAuth” (OAuth consent), но когда я пытался добавить себя как тестового пользователя, система сообщила, что я не имею на это права. ИИ-ассистенты подтвердили, что как владелец я не могу быть тестовым пользователем, потому что я автоматически обладаю этими привилегиями.

GLM 4.5 Air

Краткий ответ

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

Содержание


Процесс верификации OAuth в Google

Google реализует процесс верификации для OAuth-приложений с целью повышения безопасности и обеспечения правильного использования пользовательских данных. Когда вы создаете новый OAuth2 client ID в вашем проекте Google Cloud, Google автоматически классифицирует его как “непроверенное” приложение. Эта классификация не отражает ваши действия или намерения, а является стандартным протоколом безопасности Google.

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

В период верификации ваше OAuth-приложение ограничено:

  • Только пользователями, явно добавленными в качестве “тестовых пользователей”
  • Вашим доменом Google Workspace (если применимо)
  • Личными учетными записями, которые вы специально авторизовали

Это временное ограничение служит нескольким целям:

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

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

Почему владельцы проектов не могут быть тестовыми пользователями

Это важный момент, который вызывает путаницу у многих разработчиков. Как владелец проекта Google Cloud, вы автоматически получаете повышенные привилегии, которые включают:

  • Полный административный доступ к проекту
  • Возможность создания и управления OAuth-учетными данными
  • Право изменять настройки и конфигурации проекта

Однако эти привилегии владельца не автоматически делают вас eligible быть тестовым пользователем для вашего собственного OAuth-приложения. Вот почему:

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

Когда вы пытаетесь добавить себя в качестве тестового пользователя, система Google распознает вас как владельца проекта и отображает сообщение “не eligible”, потому что:

  1. Конфликт интересов: Разрешение владельцам быть тестовыми пользователями могло бы обойти требования верификации
  2. Модель безопасности: Google поддерживает четкое разделение между ролями разработки и пользователей
  3. Журнал аудита: Отделение тестовых пользователей обеспечивает более четкие журналы использования и аналитику

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

Правильная настройка экрана согласия OAuth

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

Для правильной настройки экрана согласия OAuth:

  1. Доступ к консоли Google Cloud → Перейдите в “API и сервисы” → “Экран согласия OAuth”

  2. Выберите тип пользователя:

    • Для большинства приложений выберите “Внешний”
    • Если используется внутри вашей организации, выберите “Внутренний”
  3. Заполните обязательную информацию:

    • Название приложения: Имя, которое пользователи будут видеть при аутентификации
    • Email поддержки пользователей: Контактная информация для вопросов, связанных с аутентификацией
    • Контактная информация разработчика: Ваши контактные данные
  4. Настройте области доступа (scopes):

    • Добавьте конкретные разрешения, которые вашему приложению нужны (например, Gmail, Календарь и т.д.)
    • Будьте точными и запрашивайте только необходимые разрешения
  5. Добавьте тестовых пользователей:

    • Здесь вы добавляете email-адреса людей, которые могут тестировать ваше приложение
    • Поскольку вы не можете добавить себя, добавьте другую Google-учетную запись, которой вы владеете или имеете доступ
    • Эти пользователи смогут проходить аутентификацию, пока ваше приложение находится в процессе верификации

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


Шаги для верификации вашего OAuth-приложения Google

После правильной настройки экрана согласия OAuth следующим шагом является завершение процесса верификации в Google. Вот как это сделать:

1. Подготовьте ваше приложение к верификации

Перед отправкой приложения на верификацию:

  • Убедитесь, что ваше приложение имеет работающую политику конфиденциальности
  • Проверьте, что цель и функциональность вашего приложения соответствуют запрашиваемым разрешениям
  • Протестируйте поток аутентификации с вашими тестовыми пользователями
  • Документируйте использование Google API вашим приложением

2. Отправьте на верификацию

  1. В настройках экрана согласия OAuth вы увидите статус, указывающий “Верификация не требуется” или подобное
  2. Нажмите “Верифицировать”, чтобы начать процесс
  3. Заполните форму заявки на верификацию:
    • Веб-сайт вашего приложения
    • Основная контактная информация
    • Подробное описание функциональности вашего приложения
    • Объяснение того, как вы будете использовать запрашиваемые Google API

3. Процесс рассмотрения

После отправки:

  • Google рассмотрит ваше приложение (обычно 3-7 рабочих дней)
  • Вы можете получить запросы на дополнительную информацию
  • Следите за почтой на предмет сообщений от команды верификации Google

4. После верификации

После успешной верификации:

  • Статус вашего приложения изменится на “Верифицировано”
  • Все пользователи (не только тестовые) смогут проходить аутентификацию
  • При желании вы можете удалить ограничения для тестовых пользователей

Устранение распространенных проблем

Даже при правильной настройке вы можете столкнуться с проблемами в процессе настройки OAuth. Вот распространенные проблемы и их решения:

Проблема: Ошибка “Тестовый пользователь не eligible”

Решение: Как установлено, вы не можете добавить себя в качестве тестового пользователя. Вместо этого:

  • Создайте отдельную Google-учетную запись для тестирования
  • Добавьте эту учетную запись в качестве тестового пользователя
  • Используйте эту учетную запись для тестирования вашего Django-приложения во время разработки

Проблема: Учетные данные не работают после добавления тестового пользователя

Решение: Убедитесь, что вы:

  • Правильно настроили redirect URI в настройках вашего OAuth client ID
  • Добавили правильный client ID и секрет в настройки Django
  • Установили и правильно настроили django-allauth

Проблема: Верификация занимает слишком много времени

Решение: Верификация в Google может занять до 7 рабочих дней. Если прошло больше времени:

  • Проверьте почту на запросы дополнительной информации
  • Убедитесь, что все обязательные поля экрана согласия OAuth заполнены
  • Обратитесь в поддержку Google, если задержка превышает 10 рабочих дней

Проблема: Области доступа (scopes) не работают после верификации

Решение: После верификации некоторые области доступа все еще могут требовать дополнительного одобрения:

  • Изучите конкретные требования к областям доступа в документации Google
  • Убедитесь, что вы запросили все необходимые области доступа при настройке экрана согласия OAuth
  • Будьте готовы предоставить дополнительное обоснование для чувствительных разрешений

Альтернативные решения

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

1. Используйте Google Workspace (ранее G Suite)

Если ваша организация использует Google Workspace:

  • Настройте ваше приложение как внутренний OAuth-клиент
  • Это обходит некоторые требования верификации для пользователей внутри вашей организации
  • Обратитесь к администратору Google Workspace вашей организации за помощью

2. Реализуйте локальную аутентификацию для разработки

Для целей разработки:

  • Создайте локальную систему аутентификации вместе с Google OAuth
  • Используйте функции социальных учетных записей django-allauth, но с fallback на локальную аутентификацию
  • Это позволяет тестировать другую функциональность приложения, пока ожидается верификация Google OAuth

3. Используйте другие OAuth-провайдеры

В качестве временного обходного решения:

  • Реализуйте OAuth с другими провайдерами (GitHub, Facebook и т.д.)
  • Эти провайдеры могут иметь разные процессы верификации или требования
  • Как только ваш Google OAuth будет верифицирован, вы можете удалить другие провайдеры, если это необходимо

Заключение

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

Для решения этой проблемы:

  1. Правильно настройте экран согласия OAuth со всей необходимой информацией
  2. Добавьте альтернативные Google-учетные записи в качестве тестовых пользователей для разработки и тестирования
  3. Отправьте ваше приложение на верификацию через консоль Google Cloud
  4. Дождитесь верификации (обычно 3-7 рабочих дней) перед открытием доступа всем пользователям

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