feat(auth): вход через VK ID и Яндекс ID
Владельцу нужны VK и Яндекс (Google/Discord/GitHub остаются в каталоге и включаются своими ключами). VK ID (id.vk.ru, OAuth 2.1): - обязательный PKCE: code_challenge в запросе авторизации, code_verifier при обмене; верификатор выводится из подписанного state (HMAC), хранить нечего; - device_id из callback уходит в обмен кода; - для конфиденциальных приложений секрет передаётся как service_token, а не client_secret (и обмен идёт параметрами в теле, не Basic); - профиль: POST /oauth2/user_info с client_id и access_token; права email и vkid.personal_info. Яндекс ID: - права login:email и login:info; секрет — в теле запроса обмена; - профиль: GET login.yandex.ru/info?format=json с заголовком "Authorization: OAuth <токен>" (не Bearer). Общее: - в профиль добавлено DisplayName: VK отдаёт имя и фамилию, Яндекс — real_name, раньше они терялись; - почта считается подтверждённой, если провайдер её отдал (отдельного флага нет, адрес приходит только по соответствующему праву) — D-083; - новые переменные OAUTH_VK_* и OAUTH_YANDEX_* в установщике и .env.example; - тесты: полные флоу обоих провайдеров на мок-серверах, каталог и ручки.
This commit is contained in:
@@ -42,6 +42,10 @@ LIVEKIT_API_SECRET= # секрет LiveKit (фаза 3)
|
||||
# Пусто — провайдер выключен, ручка входа отвечает oauth.provider_not_configured.
|
||||
# Адрес возврата для настроек приложения у провайдера:
|
||||
# <домен>/api/v1/auth/oauth/<github|google|discord>/callback
|
||||
OAUTH_VK_CLIENT_ID=
|
||||
OAUTH_VK_CLIENT_SECRET=
|
||||
OAUTH_YANDEX_CLIENT_ID=
|
||||
OAUTH_YANDEX_CLIENT_SECRET=
|
||||
OAUTH_GITHUB_CLIENT_ID=
|
||||
OAUTH_GITHUB_CLIENT_SECRET=
|
||||
OAUTH_GOOGLE_CLIENT_ID=
|
||||
|
||||
Reference in New Issue
Block a user