TrustNetServer

Материал из Сервис Облачной Демократии
(Различия между версиями)
Перейти к: навигация, поиск
(Дополнительное удостоверение для подписания админа и сервера)
(Документ-анонс новых пакетов)
Строка 36: Строка 36:
  
 
==== Документ-анонс новых пакетов ====
 
==== Документ-анонс новых пакетов ====
 +
 +
{
 +
  "host": "<host сервера-источника пакетов>",
 +
  "admin_personal_id": "<персональный идентификатор админа - владельца сервера источника>",
 +
  "ids": ["<id пакета 1>", "<id пакета 2>", ...],
 +
  "sign": "<подпись данных host+join(',', ids) транспортным ключем сервера источника Base64>",
 +
  "sign_public_key_id": "<идентификатор публичного транспортного ключа сервера Base64>"
 +
}
  
 
==== Формат возврата данных пакета по его ID ====
 
==== Формат возврата данных пакета по его ID ====

Версия 13:23, 15 июля 2015

Содержание

Общий порядок взаимодействия серверов сети доверия между собой

По мере накопления новых пакетов на исходном сервере, периодически производится их рассылка на связанные сервера.

  1. В цикле по всем серверам назначения:
    1. Исходный сервер анализирует path во всех новых пакетов и выбирает только те пакеты, в которых в path отсутствует данный сервер назначения;
    2. Данные отобранных пакетов помещаются в оперативный кэш если их там еще нет;
    3. Формируется документ - анонс новых пакетов для сервера назначения;
    4. Документ-анонс новых пакетов подписывается транспортным ключем сервера;
    5. Документ-анонс отправляется на сервер назначения на URL http://<адрес сервера>/s2s/new_packets

Сервер назначения, после получения анонса новых пакетов с другого сервера делает следующее:

  1. Производит проверку допуска данного сервера для передачи данных:
    1. Определяет исходящий сервер;
    2. Ищет в сети доверия удостоверение админа сервера источника и публичного транспортного ключа сервера-источника;
    3. Проверяет что удостоверение админа, включающее публичный транспортный ключ данного сервера источника подписаны админом данного сервера назначения;
    4. Проверяет подпись документа-анонса транспортным ключем сервера источника;
  2. Проверяет наличие идентификаторов присланных пакетов в локальной базе сервера назначения;
  3. Для всех пакетов, которые отсутствуют в базе:
    1. Ставится блокировка на добавление данного пакета (что-бы избежать параллельного добавления одного пакета);
    2. С сервера источника по пути http://<адрес сервера источника>/s2s/get_packet?<id пакета> запрашивается содержимое пакета;
    3. Пакет добавляется в локальную базу;
    4. Отменяется блокировка на добавление данного пакета;

Формат используемых для межсерверного общения данных

Дополнительное удостоверение для подписания админа и сервера

["<персональный идентификатор админа-удостоверителя>",
 "<текущее время GMT в формате UNIXTIME>",
 "<UUID 00000000-0000-0000-0000-000000000000 закодированный в BASE64>",
 "<персональный идентификатор админа владельца удостоверяемого сервера>",
 "<публичный транспортный ключ удостоверяемого сервера>",
 "<уровень удостоверения - от -127 до 127>"]

Документ-анонс новых пакетов

{
  "host": "<host сервера-источника пакетов>",
  "admin_personal_id": "<персональный идентификатор админа - владельца сервера источника>",
  "ids": ["<id пакета 1>", "<id пакета 2>", ...],
  "sign": "<подпись данных host+join(',', ids) транспортным ключем сервера источника Base64>",
  "sign_public_key_id": "<идентификатор публичного транспортного ключа сервера Base64>"
}

Формат возврата данных пакета по его ID

Личные инструменты
Пространства имён
Варианты
Действия
Навигация
Инструменты