OAuth 2.0

⌘K

OAuth 2.0

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

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


Как работает OAuth 2.0 (упрощённо)

  1. Пользователь инициирует вход через стороннего провайдера (например, Google).
  2. OAuth-сервер запрашивает у пользователя разрешение на доступ.
  3. После подтверждения пользователь получает authorization code.
  4. Приложение обменивает его на access token.
  5. С помощью токена можно обращаться к защищённым API от имени пользователя.

Токены действуют ограниченное время, могут быть отозваны, а при необходимости — заменены через refresh token без повторного входа.


Применение OAuth 2.0

  • Авторизация через Google, Facebook, GitHub и другие провайдеры;
  • Доступ к API от имени пользователя — например, Google Calendar или Dropbox;
  • Мобильные и SPA-приложения, где нельзя безопасно хранить логины и пароли;
  • Микросервисные архитектуры, где сервисы общаются друг с другом по токенам;
  • Интеграция SaaS-сервисов без прямой передачи чувствительных данных.

Преимущества OAuth 2.0

  • Безопасность: доступ без раскрытия паролей;
  • Гибкость: можно ограничивать области доступа (scope);
  • Контроль: пользователи могут отзывать доступ в любой момент;
  • Совместимость: поддерживается большинством крупных платформ и API.

Пример из жизни

Когда вы входите в Trello, Notion или Slack через аккаунт Google — вы используете OAuth 2.0. Google не передаёт пароль этим сервисам, а лишь подтверждает вашу личность и выдаёт токен для авторизации.


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

Ниже — практический комплект из трёх частей, который можно использовать для реализации OAuth 2.0 в Kubernetes через Ingress, в Dev-пайплайне или GitHub OAuth-интеграции:


1. OAuth 2.0 через Ingress Controller в Kubernetes (например, oauth2-proxy + NGINX)

Helm-чарт:
oauth2-proxy
(в связке с Google)

# values.yaml config: clientID: "<GOOGLE_CLIENT_ID>" clientSecret: "<GOOGLE_CLIENT_SECRET>" cookieSecret: "<RANDOM_32BYTE_BASE64>" provider: google emailDomains: - "*" upstreams: - "file:///dev/null" redirectURL: "https://app.example.com/oauth2/callback" extraArgs: whitelist-domain: ".example.com"

Ingress с аутентификацией

apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: app-ingress annotations: nginx.ingress.kubernetes.io/auth-url: "https://oauth2-proxy.example.com/oauth2/auth" nginx.ingress.kubernetes.io/auth-signin: "https://oauth2-proxy.example.com/oauth2/start?rd=$request_uri" spec: rules: - host: app.example.com http: paths: - path: / pathType: Prefix backend: service: name: app-service port: number: 80

📌 Пользователь не получит доступ к приложению, пока не пройдёт OAuth-авторизацию.


2. GitHub OAuth App: базовая настройка

Создаётся в https://github.com/settings/developersNew OAuth App

  • Application name: MyApp GitHub Login
  • Homepage URL:
    https://myapp.example.com
  • Authorization callback URL:
    https://myapp.example.com/oauth/callback

На выходе ты получаешь

Client ID
и
Client Secret
, которые нужно передать в OAuth middleware или прокси.


3. CI/CD: пример использования токена OAuth в GitHub Actions

jobs: deploy: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v3 - name: Exchange OAuth code for access token run: | TOKEN=$(curl -X POST \ -d "client_id=${{ secrets.GH_CLIENT_ID }}" \ -d "client_secret=${{ secrets.GH_CLIENT_SECRET }}" \ -d "code=${{ secrets.GH_AUTH_CODE }}" \ https://github.com/login/oauth/access_token \ | grep access_token | cut -d= -f2 | cut -d& -f1) echo "OAUTH_TOKEN=$TOKEN" >> $GITHUB_ENV - name: Use token run: curl -H "Authorization: token $OAUTH_TOKEN" https://api.github.com/user

📌 Этот шаг можно использовать для проверки пользователя, создания pull requests или чтения API GitHub от имени пользователя, прошедшего OAuth.


Даже в глоссарии есть повод сэкономить

Дарим 1 месяц к году оплаты VPS. Код: NEWCOM

Месяц в подарок
COPIED
NEWCOM COPIED