我想构建一个小型移动应用程序(Android 和 iOS)和一个带有 REST Api 的小型后端服务器。
我的应用程序用户(Android 或 iOS)需要登录 facebook。我通过使用 facebooks mobile sdk 来做到这一点。登录成功后,facebook sdk 将返回一个 authentificationToken,它现在在用户的智能手机上。
这个想法如下:每当我的应用程序需要一些数据时,该应用程序将通过 HTTPS 连接到我的服务器后端 (REST)。例如:应用程序生成一个简单的 HTTP GET 并传递检索到的 Facebook authenticationToken。我的服务器获取此 facebook authenticationToken 并使用此令牌来确定用户是否经过身份验证并检索 facebook 个人资料信息(名字、姓氏等)。因此服务器也联系 facebook 并为 HTTP GET 请求生成个性化响应。
我的问题是:
- 是否真的足以为每个 REST API 调用传递这个 facebookAuthentication 令牌,以使服务器检索正确的关联 facebook 用户?
- 我使用HTTPS,所以我想,连接已经足够加密了,对吧?
- 我想我需要一些签名机制,因此对每个 REST API 调用(通过 HTTPS)进行签名,以确保 facebookAuthentication 令牌仅从我的移动应用程序发送。我会通过使用带有 SHA-1 的 RSA 来签署任何 REST API 调用来做到这一点。但是这种方法的问题是:客户端需要将私钥存储在 App 中的某个位置(用于签名请求),而服务器知道公钥(用于签名匹配)。它是否正确?如果是,我想这是一个很大的安全问题,因为可以反编译移动应用程序(尤其是 android)来获取私钥。如何将此私钥安全地存储在我的应用程序中?有没有其他可以推荐的签名系统?
Bt:你知道适用于 iOS 和 Android 的好的 RSA 库吗?