Как определить вызывающую сторону за промежуточной канистрой ICP
Хранилище, к которому обращаются через маршрутизатор, видит principal маршрутизатора. Переданный в аргументе principal пользователя сам по себе не подтверждает его полномочия.
Разберите две границы авторизации
Маршрутизатор должен получить удостоверенный principal вызывающего, отклонить анонимный приватный запрос и связать операцию с этой учётной записью. Хранилище принимает переданную личность только от доверенного маршрутизатора. Проверьте прямой вызов с чужим principal в аргументе.
browser principal U → router R → vault V
caller seen by R = U
caller seen by V = R
Проверьте полномочия маршрутизатора
Доверенный маршрутизатор может действовать от имени всех пользователей в пределах выданных прав. Ограничьте доступные ему операции и записывайте в журнал как исходного пользователя, так и непосредственного вызывающего. При компрометации маршрутизатора одной переданной личности недостаточно для расследования.