首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我的无密码身份验证方法

我的无密码身份验证方法
EN

Security用户
提问于 2020-07-09 14:07:43
回答 2查看 177关注 0票数 0

我用一个好的UX实现了一个无密码身份验证。但我不是安全专家,所以我请求你的建议。

这是身份验证流程:

  1. 电子邮件地址中的用户类型
  2. 客户端向API发送电子邮件
  3. 如果不存在,API将创建用户。
  4. API使用UUID生成一个简短的活jwt,并将用户id和会话id保存为声明。
  5. 使用已确认的标志将令牌id和会话id保存到db。
  6. API将此令牌发送到电子邮件地址。
  7. 用户单击任何选择的设备上的链接。
  8. 如果令牌有效,并且声明与db中的数据匹配,则确认标志设置为true,并将last_login字段设置为令牌的iat (不太确定是否需要该^^)。
  9. 同时,如果确认登录,用户登录的客户端将进行轮询以进行确认和更新会话。
EN

回答 2

Security用户

发布于 2020-07-10 15:35:42

如果您只依赖于访问声明的电子邮件地址的能力,我认为您应该有窃听检测方法。

例如,在当前流中,如果一个邪恶的E在所有者之后访问邮箱,则E仍然可以单击该链接并进行身份验证。

另外,API和用户邮件服务器之间的每个NSA路由器(所以每个路由器^^)都可以读取令牌,如果邮件没有加密(这不仅在您的控制下)。

因此,应该为令牌实现“使用后的刻录”。

因此,如果令牌在合法用户之前被自动窃听和使用,他将看到有人获得了访问(因为令牌将被烧毁,他的访问将被拒绝)。如果令牌在合法用户之后被加入,那么它就不再有价值了。

因此,身份验证令牌在使用之后,必须不同于用于维护用户访问权限的会话令牌。

票数 1
EN

Security用户

发布于 2020-07-10 20:30:40

进程本身

您所描述的更像是一个用户创建过程,我看不到您在哪里确认用户的身份。

如果有人有用户的电子邮件密码,这是游戏结束,所以,这可能不是如所需的无密码。

电子邮件安全

另一点是,电子邮件协议并不总是安全的,相反,默认的做法是将明文的电子邮件从一个服务器发送到另一个服务器。例外可能是用户界面,这是首选使用TLS (安全互联网浏览),但其余的可能是未加密。因此,依靠电子邮件来替换密码可能不是最好的主意。

票数 0
EN
页面原文内容由Security提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://security.stackexchange.com/questions/234438

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档