无密码登录/注册电话号码

时间:2018-05-06 18:16:00

标签: c# asp.net-core sms asp.net-identity

晚安。

我正在编写一个包含HTTP API的后端,允许客户端通过提供的电话号码登录或注册。因此,此过程与传统的身份验证流程完全不同。

由于面向电话号码的身份验证不安全(但非常方便),您不能仅允许用户使用电话号码登录其他人帐户,这是电话号码回收案例中常见的情况({ {3}})。

这就是为什么我想通过要求用户在注册和帐户恢复期间指定他的电子邮件来模拟Lyft目前如何处理这一部分的原因(我想用智能手机中的额外魔术字符串进行登录)。 / p>

在我的Web API中,对于登录过程,用户会发送以下数据:电话号码,智能手机ID和短信验证ID和代码。 那时,身份验证的业务规则发挥了重要作用:

  • 如果智能手机ID与数据库中存储的电话号码不一致(可能是手机已更改或重置),则服务器会认为该号码已被其他用户拥有并以409(冲突)回复
  • 如果该号码不属于任何人,则服务器会回复403(禁止),这意味着您可以自由注册一个具有该号码的新帐户。
  • 成功路径是智能手机ID与电话号码对应,两个令牌返回客户端(刷新和访问令牌)。

对于注册(注册),还有一组几乎相似的业务规则,注册过程还需要用户电子邮件以便以后进行帐户确认(和发票),此确认有效关联电话号码并通过该客户发送电子邮件。

以后可以使用相同的电子邮件来恢复帐户(如果用户切换了智能手机或号码),从而防止了与电话号码身份验证相关的常见问题。

我选择将Identity与我的域模型分离,后者名为 PhoneNumberAuth (我甚至创建了一个有界的上下文)。

我对此有很多疑问。 ASP.NET Identity它是以标准方式(电子邮件,外部等)进行身份验证的常用方法。

  • 我应该扩展Identity类以涵盖我的自定义业务规则吗?如果是这样,最好的路径是什么?
  • 我应该创建一个façadeclasse来实现我的业务规则吗?就像我在这里做的那样:example is Lyft

在一个或另一个案例中,我将最终使用授权的身份(角色,声明等)。 我只是希望得到帮助(或指南)以获得最佳解决方案。

[编辑] 我想要的一件事是生成电子邮件确认令牌,Identity提供了一种生成和管理它们的简便方法。但是为了实现这一点,很难将Identity与我的自定义身份验证集成在一起。

0 个答案:

没有答案
相关问题