RESTful特定于设备的电话号码身份验证
我们有一个API,它向用户的手机号码发送验证码。API是:RESTful特定于设备的电话号码身份验证,rest,api,restful-authentication,api-design,Rest,Api,Restful Authentication,Api Design,我们有一个API,它向用户的手机号码发送验证码。API是: POST /api/users/verification/start/ { "mobile": "9849735434" } 上述API返回以下响应: { "isVerified": false } 如果响应为“isVerified”:true,我们不会向用户的手机发送验证码。如果为false,则发送代码 目前,所有这些都只适用于手机号码。我们希望使其基于(移动+设备)以使其更安全 为了实现这一点,我们在客户机上存储一个用户
POST /api/users/verification/start/
{
"mobile": "9849735434"
}
上述API返回以下响应:
{
"isVerified": false
}
如果响应为“isVerified”:true,我们不会向用户的手机发送验证码。如果为false,则发送代码
目前,所有这些都只适用于手机号码。我们希望使其基于(移动+设备)以使其更安全
为了实现这一点,我们在客户机上存储一个用户标识cookie,并计划在此基础上标识设备。应如何修改API以满足这一新要求?几种方法:
我们应该如何设计这样的API来验证基于移动和设备的用户?我会修改现有的API以适应新的需求,下面是我在修改时要做的重要事情
既然您有了设备和版本信息,您只需在现有API中编写条件。一旦您觉得没有旧版本的使用,我们可以停用API的这一部分。希望这对您有所帮助,您可以修改代码并遵循一些客户端和服务器步骤 客户端
第1步。
- 从用户处获取手机号码和国家/地区
- 从用户设备获取UUID。(UUID:)
- 用这个参数点击自己的Api李>
第2步。
- 获取并验证它,这个手机号码是否有效(我们也可以从客户端执行)
- 生成0001-9999或更高之间的OTP
- 发送OTP api调用以根据OTP服务提供商的api发送手机号码
- 将OTP编号与手机编号和UUID一起保存到数据库中
第4步。
- 获取手机号码、OTP和hit api
- 检查来自DB的OTP同一OTP,然后响应成功,否则您可以发送错误的OTP消息
- 当您想要使用cookie时,为什么需要一个单独的API?如果客户端有cookie,则让客户端将此cookie作为cookie发送。您的服务可以在需要时分析cookie并决定进一步的步骤
- 如果您无法发送Cookie,并且您不能选择第一种方法: 设备不应该知道,从您的服务的角度来看,它是什么类型的。这就是为什么我建议使用两种服务——一种不带cookies,另一种带cookies
- 你说“安静”。在当前表单中,您的服务不是RESTful的 A) 使用动词使服务不是RESTful的。例如,将其重命名为
- 有不同的选择
"POST /api/users/verification/"
B) 在一个操作中混合了两个操作:检查客户端是否经过身份验证,以及启动身份验证过程。将其分为两部分:
要检查客户端是否经过身份验证,请执行以下操作:
"GET /api/users/verification/mobile/9849735434"
要启动身份验证,请执行以下操作:
"POST /api/users/verification/mobile/9849735434"
在这种情况下,对于帖子,您不需要正文。似乎选项2最有意义,API行为将根据cookie的存在而改变。但我需要相同的API来根据客户的要求实现两者,即进行设备特定验证或仅进行基于数字的验证。我应该传递查询字符串来修改服务器端的这种行为吗?cookie的存在不足以决定用户应该进行设备验证吗?如果不是,并且它是一个可选参数,那么您可以有明确的URL,但仍然使用相同的API,例如
/API/users/verification/start/:mode
so../start/mobile
和../start/device
(如果有意义的话)。API可以从URL中提取模式,并决定如何处理验证。我们不会强制更新我们的应用程序,因此无法杀死旧版本API。然后,无需杀死旧版本,可以根据客户端的版本调用API