我有一个桌面客户端应用程序'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,以便服务器在尝试连接时可以识别它.
与其他解决方案相比,您认为我的解决方案是否足够好且安全?将访问令牌从客户端传递到服务器是否安全?您是否看到我的解决方案存在其他潜在问题?
提前致谢