Детальная авторизация с ZODB

Я изучал возможность использования ZODB в качестве постоянного слоя для многопользовательской видеоигры. Мне очень нравится, насколько легко он интегрируется с произвольными объектно-ориентированными структурами данных. Однако я натыкаюсь на одну проблему, по которой я не могу понять, сможет ли ZODB решить эту проблему для меня.

Очевидно, можно использовать ClientStorage от ZEO для доступа к удаленному хранилищу данных, используемому для сохранения. Хотя это замечательно в доверенной локальной сети, этого нельзя сделать без надлежащей авторизации и аутентификации в открытой сети.

Поэтому мне было интересно, есть ли шанс реализовать следующую концепцию с помощью ZODB:

На стороне сервера я хотел бы иметь запущенный сервер ZEO плюс имитацию игрового мира, который мог бы работать как полностью авторизованный клиент на сервере ZEO (или использовать то же хранилище файлов, что и сервер ZEO).

На стороне клиента мне понадобится очень ограниченный доступ для чтения / записи к серверу ZEO, чтобы клиент мог только просматривать информацию, о которой должен знать его пользователь (например, окружающая область своего персонажа), и мог только изменять информацию, связанную с действиям, которые может выполнять их персонаж.

Эти ограничения должны быть наложены сервером с использованием какой-то детализированной схемы авторизации. Поэтому мне нужно было бы сообщить серверу, есть ли у пользователя A разрешения на чтение / запись объекта B.

Есть ли способ сделать это в ZODB или сторонних решениях для такого рода проблем? Или есть способ расширить ZEO таким образом?


person aepsil0n    schedule 18.09.2013    source источник


Ответы (1)


Нет, ZEO никогда не предназначалась для такого использования.

Вместо этого он предназначен для масштабирования доступа к ZODB между несколькими процессами, при этом аутентификация и авторизация предоставляются приложению поверх данных.

В любом случае я бы не стал использовать ZEO для чего-либо, кроме локальной сети. Вместо этого используйте другой протокол для обработки связи между игровыми клиентами и игровым сервером, оставив только сервер ZODB.

person Martijn Pieters    schedule 18.09.2013
comment
Спасибо за Ваш ответ. ;) Тем временем я понял, что ZODB внутренне использует pickle, который, как правило, не следует использовать для онлайн-взаимодействия клиент-сервер. - person aepsil0n; 19.09.2013
comment
Ага, это огромный аспект, делающий любой прямой доступ к ZODB на ненадежных клиентах запретной зоной. - person Martijn Pieters; 19.09.2013