Good

OAuth 2.0

OAuth 2.0 — відкритий стандарт (RFC 6749) протоколу авторизації, що дозволяє додаткам отримувати обмежений делегований доступ до ресурсів від імені користувача без передачі пароля.

Опис

OAuth 2.0 вирішує конкретну проблему: як надати стороннєму сервісу доступ до ваших ресурсів (файлів, профілю, API), не розкриваючи йому ваш пароль. Замість пароля сервіс отримує access-токен з обмеженими правами та терміном дії.

Чотири ролі в OAuth 2.0:

Роль Опис
Resource Owner Користувач, що надає доступ
Client Додаток, що запитує доступ
Authorization Server Видає токени після автентифікації
Resource Server API, що приймає токени

Основні потоки (grant types):

Authorization Code Flow — найбезпечніший, для веб-додатків. Користувач авторизується у браузері, сервер видає короткочасний code, додаток обмінює code на access-token через захищений back-channel запит. З PKCE (RFC 7636) — єдиний рекомендований потік для публічних клієнтів.

Client Credentials Flow — для machine-to-machine взаємодії без участі користувача. Сервіс автентифікується власними credentials (client_id + client_secret або mTLS) і отримує токен. Використовується для міжсервісної комунікації всередині UMTC.

Refresh Token — довгочасний токен для оновлення access-token після закінчення терміну дії без повторної авторизації користувача.

OpenID Connect (OIDC) — розширення OAuth 2.0, що додає стандартизований ID-токен (JWT) з інформацією про автентифікованого користувача. OIDC відповідає на питання "хто ти?", тоді як OAuth 2.0 відповідає на "що тобі дозволено?".

В контексті UMTC

UMTC Wiki використовує MAS (Matrix Authentication Service) як Authorization Server. MAS реалізує OAuth 2.0 + OIDC і інтегрований з Matrix Synapse для єдиного управління ідентичністю.

Потік авторизації UMTC Wiki:

Користувач → Wiki Frontend
                    ↓ redirect до MAS
           MAS → перевірка через Matrix
                    ↓ authorization code
Wiki Frontend → обміняти code на token (MAS)
                    ↓ access_token (JWT)
Wiki Frontend → API запити з Bearer токеном
FastAPI Backend → перевірка підпису JWT (JWKS MAS)

Доступ до вмісту wiki контролюється через Matrix Space RBAC: MAS перевіряє членство користувача в Matrix Space і відповідно до цього включає ролі в JWT (roles claim). FastAPI перевіряє ці ролі при кожному запиті до захищених ендпоінтів.

# Захищений ендпоінт з перевіркою ролі
@app.get("/api/admin/content")
async def admin_content(user: User = Depends(require_role("admin"))):
    ...
💡 Порада
При налаштуванні нового клієнта OAuth 2.0 в MAS завжди вказуйте мінімально необхідний набір scopes. Принцип найменших привілеїв: клієнт повинен мати доступ лише до тих ресурсів, що потрібні для його роботи.

Пов'язані терміни

  • jwt — JWT є стандартним форматом access-токенів та ID-токенів в OAuth 2.0 / OIDC
  • matrix — Matrix Synapse використовує MAS як OAuth 2.0 провайдер
  • mtls — альтернативний метод автентифікації клієнта в Client Credentials Flow

Посилання

Шлях: glossary/oauth2.md

UMTC Wiki © 2026 | Ukrainian Military Tactical Communications