PubNub 发布限制和实时账户余额通知的安全性
每个频道每秒的发布次数没有硬性限制。 PubNub 保留更改此限制的权利。联系 support@pubnub.com 确认您的限制。
安全地发布实时账户余额
因此,您需要将实时帐户余额信息安全地发送给许多人。当您想传输一个人的实时账户余额时,您需要一份安全注意事项清单。由于您是从受信任的代码执行环境传输实时帐户余额,因此您不需要实施 PKI (公钥基础设施) 安全性。但是,您确实需要会话令牌安全授权、用户身份验证和双层加密。
会话令牌安全:PubNub Access Manager 将提供允许基于会话的用户级访问管理的机制。
用户身份验证:您需要通过电子邮件/密码对用户进行身份验证。成功验证后,您将使用grant() API 发出 Session Token 以供 PubNub Access Manager 使用。您还将生成将在第 3 项中使用的安全字符串(随机长且不可预测的密钥)。
双层加密:除了 TLS,您还将使用 PubNub AES256 消息加密。您将在 SDK 初始化时提供 cipher_key。在上面的 2 项中,除了 令牌会话密钥 之外,您还需要生成 密码密钥 并将其发送给用户。 Cipher Key 和 Auth Key(令牌会话密钥)都应该是长的、随机的和不可预测的。
Session Token Key (Auth Key) 和 Cipher Key 的好例子:
cHRiSEZPVkdnd1RqTktNVnB0YkdWS1UxSlRVbXNVMUpyV201U05XUlhSak
注意:uuid(用户的 id) 应被视为与密码密钥和会话令牌相同的长且不可预测的。
接收实时更新的用户初始化示例
现在您可以使用以下 JavaScript 示例安全连接到 PubNub。
<!-- User Initialization Example -->
<script src="https://cdn.pubnub.com/pubnub-3.7.17.min.js"></script>
<script>(function(){
// Init User Connection
var pubnub = PUBNUB({
, subscribe_key : 'sub-c-your-subscribe-key-here'
, auth_key : 'user-session-token-here'
, cipher_key : 'user-cipher-key-here'
, uuid : 'user-id-here'
, ssl : true
});
// Subscribe to a Private User Channel
pubnub.subscribe({
channel : 'user-private-channel-here'
, message : function(message) { console.log(message) }
});
})()</script>
发送实时更新的服务器初始化示例
现在,对于受信任执行环境中的服务器代码,您可以向最终用户客户端发布消息。
// Server Initialization Example
var pubnub = PUBNUB({
publish_key : 'pub-c-your-publish-key-here'
, subscribe_key : 'sub-c-your-subscribe-key-here'
, secret_key : 'sec-c-your-secret-key-here'
, auth_key : 'server-admin-session-token-here'
, cipher_key : 'destination-user-cipher-key-here'
, uuid : 'server-id-here'
, ssl : true
});
// Send Realtime Balance when User's Balance Changes
pubnub.publish({
channel : 'destination-user-private-channel-here'
, message : { "balance" : 10.00 }
});
注意:您必须预先授予对用户auth_key 的访问权限,然后他们才能在客户端设备上订阅其用户频道。服务器必须使用grant API 进行授权。
// Send Realtime Balance when User's Balance Changes
pubnub.grant({
channel : 'destination-user-private-channel-here'
, auth_key : 'user-session-token-here'
, ttl : 1440 // minutes of session time to live
, read : true // user can read-only
, write : false // user can't write
});
遵循上述这些准则将使您能够提供现代安全性,以便向最终用户提供敏感信息。请注意,我们没有涵盖从不受信任的代码执行环境发布时需要的 PKI Public Key Infrastructure。但是,根据您的需要,您将不需要 PKI,因为您是从服务器的受信任代码发布的。