我正在寻找构建一些移动应用程序.因此,这些应用程序将通过JSON和REST(例如put,post等)与我的服务器"交谈".
如果我想确保客户端手机应用程序尝试执行需要某些"许可"的操作,那么人们如何处理此问题?
例如:
我们的网站销售东西 - >电视,汽车,连衣裙等.api将允许人们浏览商店和购买物品.要购买,您需要"登录".我需要确保使用手机的人真的是他们.
如何才能做到这一点?
我已经看过twitter如何使用他们的OAuth ......看起来他们在REQUEST HEADER中有很多值?如果是这样(我有点像这种方法),我是否可以使用另一个第三方作为存储用户名/密码的网站(例如,Twitter或Facebook是OAuth提供商)..而我所做的就是以某种方式检索自定义标题数据..并确保它存在于我的数据库.. else ..让他们与他们的OAuth提供商进行身份验证?
或者还有另一种方式吗?
PS.我真的不喜欢拥有API密钥的想法 - 我觉得它可以很容易地交给另一个人使用(我们不能承担风险).
我们公司最近实施了Zscaler代理过滤,我刚刚学会了使用推出到我们所有机器的根证书来伪造SSL证书以便对我们的流量进行mitm过滤.就个人而言,我对此并不满意,但我们做了很多敏感的工作,所以我不会抱怨.
但现在我注意到他们似乎并没有持续做到这一点.例如,如果我在工作网络上访问Facebook,则证书由ZScaler Intermediate Root CA签名,这显然意味着它已被泄露.但是,如果我去,比如说,我的银行,它说它是由Verisign签署的.我认为这意味着银行连接没有被截获并且仍然是端对端加密的吗?
关于RESTful Web服务的大量示例没有考虑到当今许多应用程序是多用户的问题.
想象一下,暴露RESTful API的多用户后端.后端数据体系结构使用共享数据库和共享模式.每个表都包含对以下内容的引用tenant_id:
+-------------+----+-----------------+
| tenant_name| id | shared_secret |
+-------------+----+-----------------+
| bob | 1 | 2737sm45sx543 |
+-------------+----+-----------------+
| alice | 2 | 2190sl39sa8da |
+-------------+----+-----------------+
+-------------+----+-------+-----------+
| pet_name | id | type | tenant_id |
+-------------+----+-------+-----------+
| fuffy | 1 | dog | 1 |
+-------------+----+-------+-----------+
| kerry | 2 | cat | 2 |
+-------------+----+-------+-----------+
Run Code Online (Sandbox Code Playgroud)
问题1:如果有三个或更多客户端应用程序(即Android,iOS和Web App)与RESTful后端交互,您将如何对后端执行身份验证?
RESTful backend, API, HTTP-Verbs, shared database and schema
|
| …Run Code Online (Sandbox Code Playgroud)