Библиотека Pubnub-CodenameOne — отсутствующие методы (диспетчер доступа)

#ssl #https #codenameone #pubnub

#ssl #https #codenameone #pubnub

Вопрос:

Я использую библиотеку 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 и активировать функцию диспетчера доступа в Pubnub dashboard (я следовал руководству по Pubnub https://www.pubnub.com/docs/codenameone-java/pam-security#understanding_access_manager_permissions_hierarchy).

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

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

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

[Ошибка 112-0]: сбой аутентификации. Неверный ключ аутентификации: {«сообщение»: «Запрещено», «полезная нагрузка»: {«каналы»: [«myChannelID»]}, «ошибка»: true, «сервис»: «Диспетчер доступа», «статус»: 403}

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

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

Комментарии:

1. Похоже, это проблема в библиотеке pubnub, я не думаю, что мы можем помочь с нашей стороны

2. Я преобразовал комментарий (который я удалил) в официальный ответ ниже. Пожалуйста, просмотрите и примите, если это работает, или прокомментируйте дополнительные вопросы, где вам нужны дополнительные разъяснения.

Ответ №1:

Менеджер доступа PubNub и 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 версии 4 сервер имеет права суперадминистратора при инициализации с помощью секретного ключа. пакеты SDK версии v3 требуют, чтобы сервер предоставлял себе доступ к своему собственному ключу аутентификации, но поскольку Codename One предназначен для мобильных клиентских приложений, вам не нужно ждать v4 PubNub SDK для Codename One. И я бы предположил, что вы будете использовать Java на своем сервере, а наш Java SDK v4 v4 имеет функцию разрешений super admin при инициализации с помощью секретного ключа. ПРИМЕЧАНИЕ: документы необходимо обновить, поскольку в них по-прежнему указано, что требуется ключ аутентификации, даже если для инициализации используется секретный ключ.

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

Комментарии:

1. Теперь все работает нормально (просто отключив функцию диспетчера доступа, которая мне сейчас не нужна). Большое вам спасибо за подробное объяснение.