使用Facebook等登录Openfire服务器的Android客户端

3
我正在创建一个包含聊天功能的Android应用程序。我打算使用Openfire作为服务器,并在自定义数据库中管理其他用户数据。我希望用户能够使用他们的Facebook或Gtalk等帐户登录我的服务器,而无需在我的Openfire服务器上创建单独的帐户。我知道Kraken可以允许当前用户连接到其他XMPP服务器上的其他帐户。
另一个选项是直接从客户端连接到这些其他服务,但那样的话,我就无法像从我的中央数据中心那样轻松地跟踪和管理这些连接了。我将不得不进行额外的传输来将数据转移到我的服务器上。这可能也会导致冲突,因为聊天功能只应该与我的应用程序的其他用户通信,而不是那些不是我的应用程序用户的人。
谢谢您提供的任何帮助。这是我在首次发布之前必须克服的最后一个主要障碍。
[编辑] 我有一个外部数据库。我不能使用一些PHP和SQL来直接编辑数据库以输入新用户吗?我还考虑过允许人们登录Facebook或其他服务,然后请求来自该服务的信息以将其输入到Openfire数据库中(如果不存在)。
1个回答

2
你可以使用用户服务插件在Openfire服务器上创建用户,但这样做并不安全,因为客户端需要使用插件密钥才能完成此操作。
更好的方法是让你的应用程序使用单独的身份验证服务器;其中一个功能就是通过该插件在Openfire服务器上创建用户。

这样做仍然是安全的,或者相对安全的,因为插件密钥将存储在应用程序中,而不会对其他人可见。我对我的问题进行了编辑。 - Dan
你在每个客户端中以某种形式分发该秘密。 你不能假设它是安全的,因为任何有时间和意愿的人都能够获取它。 - Richard Barnett
关于您编辑的第一部分:如果您所指的数据库是Openfire使用的数据库,那么直接从PHP编辑它意味着(a)您将您的代码与Openfire数据库架构耦合在一起,这可能会因版本更迭而发生变化,并且不一定有很好的文档记录;(b) Openfire对用户数据库内容的缓存可能会产生意外的结果;(c)运行PHP的服务器开始成为一个认证服务器。 - Richard Barnett
关于您的编辑第二部分和Facebook整合:您的聊天功能描述听起来是私有的(即仅限于您应用程序的用户之间),因此似乎您并不想使用Kraken的网关功能;而且无论如何,在添加网关注册之前,您都必须创建一个Openfire用户。您可以使用Facebook/第三方数据来填充Openfire用户,但仍需要一些东西来协调这个过程:一个认证服务器或客户端使用用户服务插件。 - Richard Barnett
我打算尝试一下,但可能需要一点时间才能完成所有工作。如果它有效,我会回来并接受答案。如果我在通过用户服务插件发送注册信息之前通过SSL连接发送插件秘密加密,那会怎样呢?我知道有人可能会以某种方式破解它,但我认为这将是相当困难的。我想要安全性,但不需要过于强大。非常感谢你迄今为止提供的所有帮助。 - Dan
用户服务API通过HTTPS添加了很多安全性(保护插件密钥和用户密码)。实现时请享受乐趣。 - Richard Barnett

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接