首页 文章

Pubnub-CodeNameOne库 - 缺少方法(Access Manager)

提问于
浏览
1

我在我的社交应用程序项目中使用了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仪表板中的Access Manager功能(我遵循了Pubnub教程https://www.pubnub.com/docs/codenameone-java/pam-security#understanding_access_manager_permissions_hierarchy) .

所以我改变了CN1项目中Pubnub的实例化,如:

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

不幸的是,当我通过Pubnub订阅/发布时,我仍然遇到错误:

[错误112-0]:身份验证失败 . 验证密钥不正确:{“message”:“Forbidden”,“payload”:{“channels”:[“myChannelID”]},“error”:true,“service”:“Access Manager”,“status”:403}

因此,我想执行管理PAM功能,例如授予或撤销,以解决上述错误消息问题 . 但我没有找到pubnub教程中提到的pubnub.pamGrant()或pubnub.pamRevoke()方法 . 所以我仍然坚持这个错误 .

你知道如何解决这个问题吗?非常感谢您的帮助 .

1 回答

  • 0

    PubNub Access Manager和SSL / TLS

    虽然您应该使用Access Manager to secure your channels on a per device/user basis,但是为了在TLS上使用PubNub不需要Access Manager(SSL是已弃用/易受攻击的前身,并且这些术语通常可以互换使用) .

    因此,在调用PubNub操作时,您的初始化代码是正确的,以启用TLS(https连接) .

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

    但是,如果在密钥集(发布/订阅密钥)上启用Access Manager,则需要为auth-keys上的通道授予权限(读取,写入和管理) . 每个最终用户都应具有唯一的auth-key,该auth-key具有该用户发布,订阅,获取历史记录,状态等所需的通道的权限 .

    grant permissions from your secure server使用发布,订阅和密钥初始化PubNub(执行 grant API需要密钥) . 使用v4 PubNub SDK,服务器在使用密钥进行访问时具有超级管理员权限 . v3 SDK要求服务器授予自己对自己的身份验证密钥的访问权限,但由于Codename One适用于移动客户端应用程序,因此您无需等待适用于Codename One的v4 PubNub SDK . 我会假设您将在服务器上使用Java并使用v4 Java SDK v4 has the super admin permissions feature when initialized with the secret key . 注意:文档需要更新,因为它们仍然声明即使使用密钥进行初始化也需要auth-key .

    所以我的建议是,启用SSL(TLS),就像您已经为服务器和客户端做的那样,但是短期禁用Access Manager . 使基本功能正常工作后,将Access Manager和auth-keys的使用集成到服务器和客户端中 .

相关问题