SHA256
Разрешить pairing без доп пароля
This commit is contained in:
@@ -188,6 +188,8 @@ K9v3nQ4u8jYk0a2p7cD4mLx1zR0sT5wV6bN8eH3fQ1M
|
||||
}
|
||||
```
|
||||
|
||||
Если pairing должен работать **без доп. пароля**, клиент может включить его с пустым `passwordHash`.
|
||||
|
||||
### Успешный ответ
|
||||
|
||||
```json
|
||||
@@ -205,7 +207,6 @@ K9v3nQ4u8jYk0a2p7cD4mLx1zR0sT5wV6bN8eH3fQ1M
|
||||
|
||||
### Ошибки
|
||||
|
||||
- `400 / EMPTY_PASSWORD_HASH` — попытка включить pairing без `passwordHash`.
|
||||
- `463 / PAIRING_REQUIRES_AUTH_SESSION` — операция вызвана без уже авторизованной доверенной сессии пользователя.
|
||||
|
||||
### 5.2. `StartEspPairing`
|
||||
@@ -229,6 +230,8 @@ K9v3nQ4u8jYk0a2p7cD4mLx1zR0sT5wV6bN8eH3fQ1M
|
||||
}
|
||||
```
|
||||
|
||||
Если на доверённом устройстве pairing включён **без доп. пароля**, новое устройство может отправить пустой `passwordHash`.
|
||||
|
||||
Поле `trustedSessionOnline` показывает, что у пользователя сейчас есть хотя бы одна онлайн доверенная сессия, способная принять pairing-заявку.
|
||||
|
||||
### Успешный ответ
|
||||
@@ -253,7 +256,6 @@ K9v3nQ4u8jYk0a2p7cD4mLx1zR0sT5wV6bN8eH3fQ1M
|
||||
### Ошибки
|
||||
|
||||
- `400 / EMPTY_LOGIN`
|
||||
- `400 / EMPTY_PASSWORD_HASH`
|
||||
- `400 / EMPTY_REQUESTER_SESSION_KEY`
|
||||
- `400 / BAD_REQUESTER_SESSION_KEY`
|
||||
- `400 / BAD_SESSION_TYPE`
|
||||
|
||||
@@ -4,11 +4,13 @@
|
||||
- в UI добавлен новый сценарий подключения устройства через доверенную уже авторизованную сессию пользователя;
|
||||
- на экране входа появилась кнопка `Войти через другое устройство`;
|
||||
- на доверённом устройстве в `Подключить устройство` появилась кнопка `Подключить по коду`;
|
||||
- доверённое устройство может включить pairing-пароль, увидеть заявки, подтвердить подключение только с `device key` или с передачей выбранных ключей.
|
||||
- доверённое устройство может включить pairing с доп. паролем или без него, увидеть заявки, подтвердить подключение только с `device key` или с передачей выбранных ключей.
|
||||
|
||||
- что именно проверять:
|
||||
- на уже авторизованном устройстве включить pairing-пароль;
|
||||
- на новом устройстве открыть `Войти через другое устройство`, ввести `login + pairing password` и получить 7-значный код;
|
||||
- на уже авторизованном устройстве включить pairing без доп. пароля;
|
||||
- на новом устройстве открыть `Войти через другое устройство`, оставить галочку доп. пароля выключенной и получить 7-значный код;
|
||||
- отдельно включить pairing с доп. паролем;
|
||||
- на новом устройстве открыть `Войти через другое устройство`, включить галочку доп. пароля, ввести `login + pairing password` и получить 7-значный код;
|
||||
- на доверённом устройстве открыть `Подключить по коду`, найти заявку по коду и подтвердить её:
|
||||
- без доп. ключей;
|
||||
- с передачей выбранных ключей;
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
|
||||
Цель:
|
||||
|
||||
- новое устройство знает `login + pairing password`;
|
||||
- новое устройство знает `login`, а `pairing password` используется только если он включён на доверённом устройстве;
|
||||
- сервер использует пароль только как фильтр от мусора;
|
||||
- реальное доверие даёт любая уже онлайн доверенная сессия пользователя;
|
||||
- сервер не выдаёт приватные ключи сам от себя.
|
||||
@@ -58,7 +58,7 @@
|
||||
|
||||
## 3. Что именно делает сервер
|
||||
|
||||
- хранит включённость pairing и opaque `passwordHash`;
|
||||
- хранит включённость pairing и optional opaque `passwordHash`;
|
||||
- хранит pending/approved/rejected pairing-заявки;
|
||||
- рассчитывает короткий код `shortCode` из `7` цифр;
|
||||
- рассчитывает длинный `fingerprintB58` из `SHA-256` заявки;
|
||||
@@ -101,6 +101,6 @@
|
||||
|
||||
Эта схема даёт нужное разделение доверия:
|
||||
|
||||
- пароль на сервере только отсеивает лишних;
|
||||
- пароль на сервере, если он включён, только отсеивает лишних;
|
||||
- онлайн доверенная сессия решает, добавлять ли новую сессию;
|
||||
- сервер остаётся маршрутизатором и хранилищем состояния, а не владельцем секретов.
|
||||
|
||||
Reference in New Issue
Block a user