Sto*_*yan 7 security facebook desktop-application
我有一个桌面客户端应用程序'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和2中,客户端还必须传递ClientID,以便服务器在尝试连接时可以识别它.
与其他解决方案相比,您认为我的解决方案是否足够好且安全?将访问令牌从客户端传递到服务器是否安全?您是否看到我的解决方案存在其他潜在问题?
提前致谢
对我来说,只要您使用 https(您确实声明过)从 C 到 S 进行通信,这看起来就是一个好方法。
我建议为您要处理的每个 S 服务器制作不同的应用程序。例如,当我开发一个应用程序时,我有三个 Facebook 应用程序。一个用于我本地的盒子。一种用于测试环境,一种用于生产环境。然后将应用程序 ID 存储在依赖于环境的配置文件中。
另外,不要使用 Facebook 用户 ID 的当前用户名字段,而是创建一个新字段。这样,现有用户仍然可以使用他们当前的凭据登录,而采用 Facebook 登录的用户也可以轻松做到这一点。这还为您提供了一种快速方法来确定每个用户设置的凭据类型,从而更轻松地检查其凭据。
| 归档时间: |
|
| 查看次数: |
2383 次 |
| 最近记录: |