Как определить вызывающую сторону за промежуточной канистрой ICP

Хранилище, к которому обращаются через маршрутизатор, видит principal маршрутизатора. Переданный в аргументе principal пользователя сам по себе не подтверждает его полномочия.

Разберите две границы авторизации

Маршрутизатор должен получить удостоверенный principal вызывающего, отклонить анонимный приватный запрос и связать операцию с этой учётной записью. Хранилище принимает переданную личность только от доверенного маршрутизатора. Проверьте прямой вызов с чужим principal в аргументе.

browser principal U → router R → vault V
caller seen by R = U
caller seen by V = R

Проверьте полномочия маршрутизатора

Доверенный маршрутизатор может действовать от имени всех пользователей в пределах выданных прав. Ограничьте доступные ему операции и записывайте в журнал как исходного пользователя, так и непосредственного вызывающего. При компрометации маршрутизатора одной переданной личности недостаточно для расследования.

Источники