Библиотека Pubnub-CodeNameOne - отсутствующие методы (Access Manager)

Я использую библиотеку Pubnub (Pubnub-CodeNameOne-3.7.8.cn1lib) в своем проекте социального приложения (который включает чат в реальном времени, который я реализовал в вашем замечательном руководстве: https://www.codenameone.com/blog/building-a-chat-app-with-codename-one-part-5.html).

Но поскольку Apple больше не будет принимать HTTP-URL-соединения от приложений, мне пришлось усилить безопасность своего приложения, поэтому я решил использовать HTTPS и активировать функцию Access Manager на панели управления Pubnub (я следовал руководству Pubnub https://www.pubnub.com/docs/codenameone-java/pam-security#understanding_access_manager_permissions / а>).

Поэтому я изменил создание Pubnub в моем проекте CN1, например:

pb = new Pubnub(PUBNUB_PUB_KEY, PUBNUB_SUB_KEY, SECRET_KEY, true);//enable SSL
pb.setAuthKey(USER_UIID);

К сожалению, при подписке / публикации через Pubnub я все еще получаю сообщение об ошибке:

[Ошибка 112-0]: Ошибка аутентификации. Неверный ключ аутентификации: {"message": "Запрещено", "payload": {"channels": ["myChannelID"]}, "error": true, "service": "Access Manager", "status": 403}

Поэтому я хотел бы выполнить административные функции PAM, такие как предоставление или отзыв, чтобы решить указанную выше проблему с сообщением об ошибке. Но я не нашел методов pubnub.pamGrant () или pubnub.pamRevoke (), которые упоминаются в руководстве по Pubnub. Так что я все еще застрял на этой ошибке.

У тебя есть идеи, как я могу решить эту проблему? Большое спасибо за Вашу помощь.


person Philippe DE LUCA    schedule 09.10.2016    source источник
comment
Кажется, это проблема библиотеки pubnub, я не думаю, что мы можем помочь с нашей стороны   -  person Shai Almog    schedule 10.10.2016
comment
Я преобразовал комментарий (который я удалил) в формальный ответ ниже. Просмотрите и подтвердите, работает ли он, или прокомментируйте другие вопросы, требующие дополнительных разъяснений.   -  person Craig Conover    schedule 12.10.2016


Ответы (1)


PubNub Access Manager и SSL / TLS

Хотя вам следует использовать Access Manager для защиты ваших каналов для каждого устройства / пользователя., Access Manager не требуется для использования PubNub через TLS (SSL является устаревшим / уязвимым предшественником, и часто эти термины используются как взаимозаменяемые).

Таким образом, ваш код инициализации правильный, чтобы включить TLS (https-соединения) при вызове операций PubNub.

pb = new Pubnub(PUBNUB_PUB_KEY, PUBNUB_SUB_KEY, SECRET_KEY, true);

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

Вы предоставляете разрешения со своего защищенного сервера, с помощью которого вы инициализируете PubNub ключи публикации, подписки и секретные ключи (секретный ключ требуется для выполнения grant API). С пакетами SDK PubNub v4 сервер имеет права суперадминистратора при запуске с секретным ключом. SDK v3 требует, чтобы сервер предоставил себе доступ к собственному ключу аутентификации, но поскольку Codename One предназначен для мобильных клиентских приложений, вам не нужно ждать SDK PubNub v4 для Codename One. И я предполагаю, что вы будете использовать Java на своем сервере и нашем v4 Java SDK v4 имеет функцию разрешений суперадминистратора при инициализации с секретным ключом. ПРИМЕЧАНИЕ: необходимо обновить документы, поскольку в них по-прежнему указывается, что ключ авторизации требуется, даже если для инициализации используется секретный ключ.

Поэтому я рекомендую включить SSL (TLS), как вы это уже делаете для своего сервера и клиентов, но на короткое время отключите Access Manager. После того, как ваша базовая функциональность заработает, интегрируйте использование Access Manager и ключей аутентификации в свой сервер и клиенты.

person Craig Conover    schedule 12.10.2016
comment
Теперь он работает нормально (просто отключив функцию диспетчера доступа, которая мне сейчас не нужна). Большое спасибо за подробное объяснение. - person Philippe DE LUCA; 15.10.2016