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"))):
...
Пов'язані терміни¶
- jwt — JWT є стандартним форматом access-токенів та ID-токенів в OAuth 2.0 / OIDC
- matrix — Matrix Synapse використовує MAS як OAuth 2.0 провайдер
- mtls — альтернативний метод автентифікації клієнта в Client Credentials Flow
Посилання¶
- RFC 6749 — The OAuth 2.0 Authorization Framework — основна специфікація
- RFC 7636 — PKCE — захист Authorization Code Flow
- OpenID Connect Core 1.0 — розширення OAuth 2.0
Шлях: glossary/oauth2.md