Перейти к содержимому
davidka.net > 💻 🧠 Код 1001 > 🧪📓 Без категории > Google OAuth: где найти Client ID и Client Secret

Google OAuth: где найти Client ID и Client Secret

  • автор:

Google OAuth часто выглядит запутанно, особенно когда авторизация уже настроена, а приложению внезапно требуется какой-то «ключ Google». На практике здесь обычно используются два связанных значения:

  • Client ID — идентификатор OAuth-приложения.
  • Client Secret — секрет приложения.

В этой статье разберём, где их найти в Google Cloud Console и как отличить один от другого.

1. Что такое Google OAuth

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

Например, пользователь нажимает:

Sign in with Google

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

Типичная схема выглядит так:

Пользователь
     │
     │ "Войти через Google"
     ▼
Ваше приложение
     │
     │ OAuth
     ▼
Google
     │
     │ Авторизация пользователя
     ▼
Ваше приложение

Чтобы Google понимал, какое именно приложение выполняет запрос, создаётся OAuth Client.


2. Client ID

При создании OAuth Client Google выдаёт ему уникальный идентификатор.

Он обычно выглядит примерно так:

741761730064-kr7ef8ikf4rf5fh1nt1htlvlqjgb0m7r.apps.googleusercontent.com

Именно такая строка была найдена в нашем примере.

Это:

Google OAuth Client ID

Как распознать Client ID

Обычно Client ID:

  • содержит .apps.googleusercontent.com;
  • является длинной строкой;
  • не является секретом;
  • используется для идентификации OAuth-приложения.

Например:

GOOGLE_CLIENT_ID=
741761730064-kr7ef8ikf4rf5fh1nt1htlvlqjgb0m7r.apps.googleusercontent.com

Client ID можно указывать в конфигурации фронтенда и в некоторых случаях он виден пользователю. Сам по себе Client ID не даёт доступа к аккаунту Google.


3. Client Secret

Второе важное значение — Client Secret.

Он используется приложением при OAuth-взаимодействии с Google и должен рассматриваться как секретная информация.

Выглядеть он может примерно так:

GOCSPX-xxxxxxxxxxxxxxxxxxxxxxxx

В отличие от Client ID, Client Secret не следует публиковать в:

  • GitHub;
  • JavaScript-коде браузера;
  • публичных конфигурационных файлах;
  • статьях;
  • скриншотах;
  • Docker image, если секрет можно получить из него;
  • открытых .env-файлах.

Правильный вариант:

GOOGLE_CLIENT_ID=741761730064-....apps.googleusercontent.com
GOOGLE_CLIENT_SECRET=GOCSPX-....

При этом .env обычно добавляют в .gitignore.


4. Где найти Google OAuth Client

Для управления OAuth-учётными данными используется Google Cloud Console.

Обычно путь выглядит так:

Google Cloud Console
        ↓
APIs & Services
        ↓
Credentials
        ↓
OAuth 2.0 Client IDs

В разделе OAuth 2.0 Client IDs находятся созданные OAuth-клиенты.

Например:

OAuth 2.0 Client IDs

My Web Application
    Client ID:
    741761730064-kr7ef8ikf4rf5fh1nt1htlvlqjgb0m7r.apps.googleusercontent.com

Если открыть нужный OAuth Client, можно посмотреть его настройки.


5. Как найти Client Secret

Откройте:

Google Cloud Console
→ APIs & Services
→ Credentials

Затем найдите нужный OAuth 2.0 Client ID.

Открыв его настройки, можно увидеть информацию о клиенте.

Если Google предоставляет возможность скачать конфигурацию, можно использовать Download JSON.

В JSON-файле для веб-приложения структура может выглядеть примерно так:

{
  "web": {
    "client_id": "741761730064-....apps.googleusercontent.com",
    "client_secret": "GOCSPX-....",
    "redirect_uris": [
      "https://example.com/oauth/callback"
    ]
  }
}

Таким образом, из одного файла можно получить:

client_id
client_secret
redirect_uris

6. Client ID и Client Secret — это не API Key

Это очень важное различие.

В Google используются разные виды credentials.

OAuth Client

Используется для:

Авторизация пользователя
        ↓
Sign in with Google

Основные значения:

Client ID
Client Secret

API Key

Используется для доступа к некоторым Google API:

Приложение
    ↓
API Key
    ↓
Google API

API Key и OAuth Client — не одно и то же.

Поэтому если документация вашего приложения говорит:

GOOGLE_CLIENT_ID
GOOGLE_CLIENT_SECRET

вам нужен именно OAuth Client, а не обычный API Key.


7. Что выбрать при создании OAuth Client

Google предлагает разные типы OAuth-клиентов.

Например:

Web application
Desktop app
Android
iOS
TVs and Limited Input devices

Для обычного веб-сайта или веб-приложения обычно используется:

Web application

В его настройках особенно важен раздел:

Authorized redirect URIs

Например:

https://example.com/oauth/callback

Именно на этот адрес Google возвращает пользователя после успешной авторизации.


8. Redirect URI

Одна из самых распространённых проблем с Google OAuth — неправильный redirect_uri.

Предположим, приложение отправляет пользователя на Google:

https://accounts.google.com/...

После авторизации Google должен вернуть пользователя обратно в приложение.

Например:

https://example.com/auth/google/callback

Этот адрес должен быть разрешён в настройках OAuth Client.

Если приложение использует:

https://example.com/auth/google/callback

а в Google Cloud Console указан:

https://example.com/oauth/callback

авторизация может завершиться ошибкой.

Поэтому redirect_uri должен совпадать с зарегистрированным URI.


9. Как это выглядит в приложении

В приложении обычно присутствуют настройки вроде:

GOOGLE_CLIENT_ID
GOOGLE_CLIENT_SECRET
GOOGLE_REDIRECT_URI

Например:

GOOGLE_CLIENT_ID=741761730064-....apps.googleusercontent.com
GOOGLE_CLIENT_SECRET=GOCSPX-....
GOOGLE_REDIRECT_URI=https://example.com/auth/google/callback

Здесь:

ПараметрНазначение
GOOGLE_CLIENT_IDИдентифицирует OAuth-приложение
GOOGLE_CLIENT_SECRETСекрет OAuth-приложения
GOOGLE_REDIRECT_URIАдрес возврата пользователя после авторизации

10. Можно ли публиковать Client ID?

Да, Client ID сам по себе не является секретом.

Например, эта строка:

741761730064-kr7ef8ikf4rf5fh1nt1htlvlqjgb0m7r.apps.googleusercontent.com

является Client ID.

Её наличие в HTML или JavaScript само по себе не означает компрометацию секрета.

Но это не означает, что остальные данные OAuth можно публиковать.

Особенно важно защищать:

Client Secret

11. Что делать, если Client Secret потерян

Если Client Secret больше невозможно найти, не стоит пытаться угадывать его.

Лучше открыть:

Google Cloud Console
→ APIs & Services
→ Credentials

и найти соответствующий OAuth Client.

Если старый секрет невозможно восстановить, можно создать новый OAuth Client или выполнить предусмотренную Google процедуру ротации credentials.

После этого секрет необходимо заменить в приложении.


12. Важный момент при работе с Cloudflare

Google OAuth может использоваться не только непосредственно вашим приложением.

Например:

Пользователь
    ↓
Cloudflare Access
    ↓
Google
    ↓
Авторизация

В таком случае Google OAuth Client может быть настроен в Cloudflare Zero Trust.

Это отличается от OAuth, который непосредственно реализован внутри вашего Python/Node.js/другого приложения.

Поэтому прежде чем искать ключ, нужно определить:

Кто именно использует Google OAuth — ваше приложение или Cloudflare?

Если авторизация настроена в Cloudflare Access, credentials могут относиться именно к настройке Cloudflare.

Если авторизация реализована в коде приложения, нужно искать OAuth Client, который использует это приложение.


13. Как быстро определить, что именно у вас есть

Если у вас есть строка:

741761730064-kr7ef8ikf4rf5fh1nt1htlvlqjgb0m7r.apps.googleusercontent.com

то практически наверняка это:

Client ID

Если приложение дополнительно требует:

GOOGLE_CLIENT_SECRET

то одной этой строки недостаточно.

Нужно найти ещё:

Client Secret

И в итоге конфигурация будет выглядеть примерно так:

GOOGLE_CLIENT_ID=741761730064-kr7ef8ikf4rf5fh1nt1htlvlqjgb0m7r.apps.googleusercontent.com
GOOGLE_CLIENT_SECRET=GOCSPX-XXXXXXXXXXXXXXXX

14. Главное, что нужно запомнить

У Google OAuth есть два ключевых понятия:

Client ID
    ↓
Кто я?

Client Secret
    ↓
Секрет, подтверждающий OAuth-клиента

В нашем случае:

741761730064-kr7ef8ikf4rf5fh1nt1htlvlqjgb0m7r.apps.googleusercontent.com

— это Client ID, а не секретный ключ.

Для полноценной OAuth-конфигурации может потребоваться ещё Client Secret.

И самое главное правило безопасности:

Client ID можно показывать, Client Secret — нельзя публиковать.

Если секрет уже случайно попал в GitHub, чат, статью или другой публичный источник, безопаснее считать его скомпрометированным и выполнить его замену/ротацию.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *