В версии 0.8 возможно будут какая-то интеграция с OAuth, так как там появляется дополнительные интерфейсы, для работы по принципу REST с внешними серверами. Однако в версии 0.7 такого нет.
Очевидно, надо вывесить какой-то внешний интерфейс, при вызове которого (обязательно методом POST) можно записывать данные. Но надо как-то авторизовывать эти вызовы (подразумевается злоумышленник знает url этого интерфейса). Как-то надо ограничивать вызовы только с моего приложения.
Есть идея, что после установки приложения в контейнер, оно получает какой-то уникальный ID (по крайне мере в контейнере). Т.е. после установки приложения надо узнать этот ID, и прописать его на моем сервере вместе с доменом контейнера. Потом, при вызове интерфейса для записи данных, ему будут передаваться ID вызывающего приложения вместе с адресом контейнера, а на сервере они будут проверяться из списка разрешенных.
Но тут возникает проблема, раз злоумышленник знает принцип работы интерфейса, он может зайти на страничку приложения в контейнере, узнать его ID - и подставлять при своих вызовах. Т.е. надо найти какой-то секретный ID, который нигде не показывается, а доступен только изнутри приложения.
Также, остается еще возможность перехвата трафика и выуживания оттуда ID - но этот вариант мы не рассматриваем как маловероятный, и решающийся с помощью SSL.
Any ideas or suggestions?
UPDATE: В OpenSocial 0.8 с этим все хорошо, смотрим использование параметра gadgets.io.AuthorizationType.SIGNED
. Осталось узнать как с этим в 0.7 (вроде этот параметр есть) и даже если он есть, как с его поддержкой в наших отечественных социальных сетях (вернее, пока единственной сети поддерживающей OpenSocial – МойМир).
Комментариев нет:
Отправить комментарий