“魔术链接”是一种身份验证吗?

信息安全 验证 oauth2 一次性密码
2021-08-27 11:18:51

从我阅读的内容来看,魔术链接要求用户提供他们的电子邮件,用户将收到一封包含登录链接的电子邮件,用户可以使用此链接登录系统。

这可以称为身份验证吗?我们正在验证的只是使该人可以访问电子邮件的拥有因素,而不是我们确认用户身份的地方。

  1. 仅验证身份验证的拥有因素有多安全。任何知道我的电子邮件的人都可以代表我请求登录链接

  2. 这可以与 gmail、yahoo 等公共电子邮件一起使用吗?

  3. 如果这被认为是一种身份验证形式,是否可以将其与authorization_codeOAuth 中的授权授予进行比较?authorization_code魔术链接中的唯一代码是否可以与OAuth中的唯一代码相媲美?

4个回答

“魔术链接”是一种身份验证吗?

的,是的。

它对用户进行身份验证,类似于让他们输入密码、使用智能卡并输入其 PIN 或检查他们的指纹。它不是(固有的)授权,因为“单击电子邮件上的链接”并不一定证明任何事情。


仅验证身份验证的拥有因素有多安全。任何知道我的电子邮件的人都可以代表我请求登录链接

如果您信任电子邮件用于密码重置,那么信任它用于批发登录令牌是合理的。

从新位置登录时,某些服务将其用作第二个身份验证因素;有些只需要 1 个因子就可以这样使用。假设一个人的电子邮件帐户通常会被视为受信任的。(如果不是这样,忘记密码会麻烦得多。)

(但是,让每个链接一次性创建或以其他方式在短暂的 <24 小时窗口内过期可能是明智的。)

这可以与 gmail、yahoo 等公共电子邮件一起使用吗?

它可以与您已经允许作为您帐户的可信联系地址的任何电子邮件提供商一起使用(例如,作为忘记密码的身份验证方法。)

如果这被认为是一种身份验证形式,是否可以将其与authorization_codeOAuth 中的授权授予进行比较?与魔术链接中的唯一代码相比authorization_code

几乎是正确的,但并不完全正确:

  • authorization_code令牌由身份提供者生成然后由最终用户/资源所有者提供给依赖方)
  • 魔术链接由依赖方生成后提供给身份提供者(然后,从那里提供给最终用户/资源所有者,以作为身份验证返回给依赖方)

你知道网络上那些“用 Facebook 登录”和“用 Gmail 登录”按钮吗?它们几乎相同。

当您允许某人使用他们的 Facebook 帐户登录时,您就是在确认该人有权访问该 Facebook 帐户,而不是在确认他的身份。该确认已委托给 Facebook。

魔术链接的作用基本相同。打开链接确实确认用户有权访问电子邮件,但身份验证被委派给他的电子邮件提供商。

任何知道我的电子邮件的人都可以代表我请求登录链接

知道您的电子邮件的人可以尝试代表您登录,他们可以在您的电子邮件提供商上做同样的事情。在互联网上的任何服务上。能够尝试登录与验证自己不同,因此没有区别。

他们将无法登录,因为他们没有链接,如果您点击链接,您正在登录,而不是他们。所以没关系。

这可以与 Gmail、Yahoo 等公共电子邮件一起使用吗?

它们不是公共电子邮件。我有一个 Gmail 帐户,我很确定它不是公开的。公共电子邮件将是那些一次性电子邮件(例如 Mailinator)。

任何人都可以阅读来自 Mailinator 的公开电子邮件,因此如果您的服务显示“链接已发送到 supersecret@mailinator.com”,任何人都可以到达那里并获取令牌。

但是,如果将令牌发送到“supersecret@gmail.com”,则只有该电子邮件的所有者才能访问该令牌。如果电子邮件来自 Google、Yahoo 或白宫也没有区别:只有有权访问该电子邮件的一个(或多个)才能拥有令牌。

如果这被认为是一种身份验证形式,是否可以将其与 oauth 中的 auth_code 授权授予进行比较?

如果无法重复使用令牌,则与 OAuth 相同。

  1. 每个具有“我忘记密码,请给我发电子邮件”功能的经典身份验证系统都与您描述的相同。它只是通过电子邮件地址的所有权证明来进行身份验证。

  2. 为什么不?

  3. 生成的链接包含一个身份验证令牌,可以限制为一次使用,例如 OAuth 的授权授权。

魔术链接相当于 OAuth2 中的授权码。授权代码和魔术链接都没有明确标识谁在访问资源。这使它成为一种授权形式而不是身份验证,因为任何知道链接或令牌的人都可以访问受控资源。您的链接

任何拥有登录链接的人都有权访问 [原文如此] 相应用户的帐户,直到链接过期。

OAuth2 中的身份验证来自颁发授权令牌之前的流程中的步骤。同样,发出魔术链接的身份验证来自将链接发送到特定的电子邮件地址,大概是在采取措施确保该电子邮件地址由特定主体控制并且该主体不会与任何其他主体共享该链接之后。电子邮件隐私方面的任何弱点都将映射到身份验证完整性方面的弱点。