【问题标题】:2-Step Verification - ensure that user is still authenticated in further sessions两步验证 - 确保用户在后续会话中仍然通过身份验证
【发布时间】:2016-07-25 09:08:58
【问题描述】:

我不确定我有这个问题,所以也许你可以帮助我。 我已经为 Android 应用构建了两步验证。

  1. 用户通过 https 将他的电话号码从应用程序发送到服务器
  2. 服务器通过 SMS 将验证码发送回用户(基于
    Twilio/PHP)
  3. 用户收到代码并可以在 服务器

此时我可以确定用户是发送代码的智能手机的经过身份验证的所有者。

如果用户现在重新启动他的手机和他的应用程序,我如何确保该用户仍然是同一个经过身份验证的用户? 我是否必须每次根据身份验证代码向服务器发送某种凭据?这是一种安全且正确的方法吗?

谢谢你和最好的问候!

Dopser

【问题讨论】:

  • 如果其他用户拿到手机,短信无法区分。
  • 在每个请求上发送电话号码,如果相同,则在服务器上进行匹配,然后用户进行身份验证,否则根据需要再次要求验证..

标签: java php android authentication twilio


【解决方案1】:

可以生成一个令牌号(类似于 cookie),它同时存储在手机和服务器数据库中。如果您想减少跟踪另一个号码的麻烦,令牌号码也可以是验证码。

您可以使用 sharedpreferences 或 sqlite 数据库等将此令牌存储在您的设备上

Storage options on Android

在每个 onCreate() 实例上,您都可以检查两个标记是否匹配。

这样您就可以解决您的问题。 您可以对所有后续活动执行相同操作。

【讨论】:

  • 完美,谢谢! :) 所以我的下一步将是在客户端和服务器端使用同步令牌的令牌系统,它会在证书间隔内改变自己。
  • 我使用 Google Firebase 从/向应用程序触发更改。在几分之一秒内,更改就会反映在应用程序中。因此,您可以创建一个广播接收器,如果更改密码或从服务器删除令牌,则该接收器会注销用户。同样在 Google Firebase 中,心跳非常低,并且在用户离线时会堆积请求。我告诉你非常有帮助.. ** 最重要的是,不要忘记将答案标记为正确。我指望投票达到 50 分,这样我就可以发布 cmets 了:P **
  • 谢谢,我不需要回答只需要 cmets 的帖子:D
【解决方案2】:

用户应在每次请求时发送访问令牌。

您可能需要考虑 OAuth 流程,因为您的流程可以映射到 OAuth 令牌身份验证。看这里http://oauth.net/2/

您还需要及时考虑令牌/代码的有效性。

希望这会有所帮助。

【讨论】:

  • 您好,谢谢!我对 OAuth 不是很熟悉,但在我看来,这似乎是确保服务之间经过身份验证的通信而不使用用户密码本身的正确方法。听起来不错!
猜你喜欢
  • 2014-02-14
  • 2018-01-11
  • 1970-01-01
  • 2021-09-04
  • 1970-01-01
  • 1970-01-01
  • 2019-03-22
  • 1970-01-01
  • 2014-12-25
相关资源
最近更新 更多