2015-11-01 122 views
1

我正在构建一个连接到服务器的小型Android应用程序。应用服务器通信协议

我的应用程序会使用简单的帖子向我的服务器发送消息,并且我正在使用Google Cloud Messaging让服务器向我的应用程序发送消息。

我构建了一个注册页面,一个电子邮件确认和一个连接页面,但现在我想知道如何锁定服务器和应用程序之间的通信。

这是我心目中的协议(让我们的应用程序的简单为例,以应用信息):

  • 应用程序发送后的相关信息到服务器与自我的相关信息(如姓名和AUTH_TOKEN),目标用户该消息
  • 服务器搜索属于目标用户的应用程序和使用curl将消息转发给GCM
  • GCM将消息发送到目标应用

服务器如何确定服务器收到的名称,auth_token等是否真的来自发件人?

回答

1

让服务器在客户端进行注册时生成认证令牌并将其发送回客户端。服务器现在知道[client - token]映射。

每次客户端想要发送消息时,它也会发送服务器可以查找并检查的身份验证令牌。客户甚至不必发送他或她的名字,服务器应该知道这一点。

要防止MITM攻击,请使用安全连接(HTTPS)。

+0

但是,如果我不希望用户每发送一个消息输入凭据,那么我应该存储在手机上,这似乎不是一个好主意,没有关于这些证书? –

+0

为什么不呢?我设计我的API与[这个SO答案](http://stackoverflow.com/questions/15602667/possible-approach-to-secure-a-rest-api-endpoints-using-facebook-oauth)记住 –

+0

,因为密码将以纯文本形式存储,所以任何拥有扎根设备的人(如我)基本上都会向全世界展示他们的密码......请参阅此链接回答:http://stackoverflow.com/a/786588/3888000 –

1

虽然有很多的解决方案,以确保连接的,当您使用GCM您downsteam的消息,我建议使用支持上游信息(从客户端到服务器)的新的谷歌云端通讯API。 它非常快速,可靠和安全。 在这里您可以找到docs

您应该只将服务器端从HTTP更改为XMPP。

在这里您可以找到docs

+0

我真的不是专业人士,所以这对我来说似乎有点复杂,但我会试试看,谢谢! (PS你给了两次相同的链接) –

+0

@DanChaltiel谢谢,我编辑帖子,并使链接正确。 – Ali

+0

我认为在使用XMPP之前,我的头会爆炸。我设法安装在我的树莓派一个XMPP服务器与洋泾浜的效果很好,但没有找到工作的代码的任何Android样品。大家都说使用Smack,但是没有任何地方更新文档。你可以帮帮我吗 ? –