小编Sto*_*yan的帖子

在桌面客户端 - 服务器应用程序中集成facebook登录

情况

我有一个桌面客户端应用程序'C'和一个服务器应用程序'S',都是用C++编写的,驻留在不同的机器上.他们目前通过TCP进行通信.敏感的用户特定数据存储在'S'上.

当前登录流程如下:用户在"C"中输入其凭据,将它们加密发送到"S","S"将它们与在此用户的特殊数据库"D"中具有的凭据进行比较.如果凭据有效,则S为客户端提供特定于用户的数据.否则,连接被拒绝.新用户的注册是通过集中式Web服务器'将凭证发送到'S'并将它们放入'D'.

问题

我希望客户的用户能够通过当前登录屏幕上的"使用Facebook登录"按钮通过Facebook登录(目前我只有用户和通行证).我只需要登录,没有其他集成.我将使用用户的FacebookID号作为数据库D中的ID.

我阅读了Facebook文档,他们建议在客户端嵌入Web浏览器,打开传递您的应用ID的特殊身份验证对话框,然后收听URI更改以从中获取访问令牌(最后对此进行了描述)以上文件).这正是我打算做的.我已经在客户端中嵌入了Web浏览器.它将在那里打开auth对话框,监听C++代码中的URI更改并从URI获取访问令牌.然后客户端将访问令牌发送到服务器'S'.'S'将向Facebook发出HTTP请求,传递访问令牌,Facebook将回复用户的个人数据.'S'读取用户的FacebookID并将其放入用户数据库'D'(如果它尚未存在).如果它已经存在,则为客户端提供敏感的用户特定数据.

替代方案

  1. 使用用户机器的本地浏览器打开Facebook对话框而不是嵌入式对话框(用户会觉得这样更安全).Facebook会将用户的浏览器重定向到服务器'S',直接将访问令牌传递给它.在这种情况下,我必须制作'S'HTTP侦听器(在其上放置一个C++ Web服务器).这里的问题是Facebook允许重定向仅限于预定义的域(事先枚举),每次我想用不同的服务器'S'(经常),我将不得不在Facebook App控件中输入它面板.
  2. 使用当前我在开头提到的当前Web服务器.我将用户的本地浏览器重定向到该Web服务器,该服务器将触发服务器端PHP逻辑,以便将用户带到auth对话框,获取访问令牌并将其提供给S,它将从中获取FacebookID.

在解决方案1和2中,客户端还必须传递ClientID,以便服务器在尝试连接时可以识别它.

我的问题

与其他解决方案相比,您认为我的解决方案是否足够好且安全?将访问令牌从客户端传递到服务器是否安全?您是否看到我的解决方案存在其他潜在问题?

提前致谢

security facebook desktop-application

7
推荐指数
1
解决办法
2383
查看次数

标签 统计

desktop-application ×1

facebook ×1

security ×1