我正在构建移动应用程序(使用 PhoneGap/Cordova)。为了使用我的应用程序,客户端必须通过 facebook 进行身份验证。
我想使用该 facebook 身份验证机制来保护我的 wcf 服务。我正在考虑这样使用它:
首次注册:
- 客户端登录 facebook 并获取访问令牌
- 客户端将其访问令牌发送到我的 wcf 服务
- 在我的服务中,我扩展了访问令牌(以获取长期令牌),并将其存储在数据库中,并为新成员创建一条新记录
- 我使用扩展令牌和成员 ID 向客户端发送响应
- 客户端将令牌和成员 ID 存储在其移动设备中
当客户端进入应用程序时:
- 客户重定向到 faceebok
- 如果 facebook 的身份验证失败(可能是由于各种原因),他会重新授权我的应用程序。
- Facebook 使用新令牌将客户端重定向回我的应用程序
- 如果令牌未更改(与设备中存储的令牌相比),则中断。
- 客户端向我的 wcf 服务发送旧令牌 + 新令牌
- wcf 将接收到的旧令牌与 db 中存储的令牌(使用成员 ID)进行比较以识别客户端,如果不相等则引发异常。
- 在我的服务中,我扩展了访问令牌(以获得长期令牌),并将其存储在数据库中
- 我使用扩展令牌向客户端发送响应
- 客户端用其移动设备中的新令牌覆盖旧令牌
对于从我的移动应用程序到我的 wcf 服务的每个请求:
- 客户端发送请求,它传递的第一个参数是他存储在设备中的 facebook 令牌。第二个参数是成员ID。
- wcf 将接收到的令牌与 db 中存储的令牌(使用成员 ID)进行比较以识别客户端,如果不相等则引发异常。
- 处理请求
最后,我使用 facebook 令牌来识别客户。此外,我可以使用 SSL 在网络级别进行保护。这是一个好方法吗?谢谢您的帮助。