首页 > 科技周边 > IT业界 > 什么是无密码的身份验证以及如何实施它

什么是无密码的身份验证以及如何实施它

Joseph Gordon-Levitt
发布: 2025-02-10 12:38:14
原创
911 人浏览过

告别密码时代!无密码身份验证的安全性与便捷性

What is Passwordless Authentication and How to Implement it

核心要点:

  • 无密码身份验证是一种用户管理方法,它通过所有权或固有因素(例如生物特征)验证用户的身份,而不是使用基于知识的因素(例如密码)。常见的无密码方法包括一次性验证码、魔法链接、生物识别登录、智能卡和数字证书。
  • 无密码身份验证在安全性及用户体验方面优势显着,它降低了网络钓鱼和密码盗窃的风险,减少了凭据重复使用的情况,免去了用户记忆多个密码的困扰,并加快了登录速度。预计到2027年,无密码认证将超越密码的使用。
  • 尽管无密码身份验证有很多优势,但它也存在一些局限性,例如用户体验不熟悉、设备被盗或SIM卡被盗用的风险,以及生物识别安全并非完美无缺。建议尽可能使用多因素身份验证 (MFA) 以增强安全性。
  • 在网站或应用程序上实施无密码身份验证可以通过用户管理解决方案或身份验证服务提供商来实现。本文提供了一个分步指南,介绍如何使用名为Frontegg的提供商集成无密码方法。

无密码身份验证是一种用户无需密码或密钥即可登录系统或应用程序的用户管理方法。它通过所有权因素(例如电子邮件帐户)或固有因素(例如面部识别)来验证用户的身份,而不是使用基于知识的因素(例如密码)。

此文章是与Frontegg合作创建的。感谢您支持使SitePoint成为可能的合作伙伴。

许多身份验证方法被用作密码的替代方案:

  • 一次性验证码 (OTC)
  • 魔法链接
  • 生物识别登录(指纹、Face ID、语音识别)
  • 智能卡或物理令牌
  • 数字证书

What is Passwordless Authentication and How to Implement it

无密码身份验证的普及

您可能已经在不知不觉中使用了“无密码身份验证”。许多银行应用程序使用指纹和语音识别来验证用户。 Slack 则以使用魔法链接来验证用户而闻名。

过去几年,无密码身份验证的使用稳步增长。身份验证提供商 Auth0 预测,无密码身份验证将在 2027 年超越密码的使用。 Gartner 预测,到 2022 年,“60% 的大型和全球性企业以及 90% 的中型企业将在超过 50% 的用例中实施无密码方法——高于 2018 年的 5%”。

网络巨头也在尽最大努力加速这项技术的采用。在 2022 年的世界密码日,谷歌、微软和苹果宣布了他们扩大对创建的通用无密码登录标准的支持的计划。

2022 年 6 月,苹果宣布了他们的新“密码密钥”功能,用于登录网站和应用程序。此公告实际上意味着苹果将使用 Touch ID 或 Face ID 为该网站创建数字密钥。这样就无需创建和写下密码。

无密码身份验证的优势

无密码身份验证提供安全性和用户体验优势:

  1. 降低网络钓鱼和密码盗窃风险:用户不会受到网络钓鱼攻击的影响,在网络钓鱼攻击中,用户会被带到假冒网站并输入其登录凭据。如果用户不输入密码,他们就不会受到暴力破解攻击、密码数据泄露和其他类型的凭据盗窃的影响。
  2. 减少凭据重复使用:在多个服务和帐户中重复使用密码会对用户和您的系统造成更大的风险,这是无法避免的。据报道,64% 的人将一个漏洞中暴露的相同密码用于其他帐户。
  3. 无需记忆密码:您的用户无需记住众多帐户的用户名和密码。有时,在多次登录失败后,他们不得不一次又一次地重置密码。
  4. 更快的登录速度:我们都很忙。建议强密码至少为 16 个字符长,与扫描指纹或打开魔法链接相比,输入强密码需要很长时间。

无密码身份验证的局限性

无密码身份验证并非完美无缺,从安全性和体验的角度来看,它也有一些局限性。

  • 不熟悉的用户体验:许多人习惯于输入或自动填充密码。转换为魔法链接或一次性验证码可能会让用户感到震惊。
  • 设备被盗或SIM卡被盗用的风险:通过短信发送一次性验证码可能会让您的用户在手机被盗或成为 SIM 卡被盗骗局受害者时变得脆弱。
  • 生物识别安全并非完美无缺:多年来,指纹扫描仪、Touch ID 和 Face ID 都被成功破解。

依赖任何单一因素进行身份验证(无论是否有密码)都会带来一定程度的风险。我们建议尽可能使用多因素身份验证 (MFA)。

无密码身份验证安全吗?

是的,无密码身份验证被认为是安全的,但它并非完全没有风险。没有密码的帐户不必担心密码落入恶意人员手中。这可能是通过数据泄露、暴力破解攻击、设备丢失或错放的便利贴发生的。

与无密码身份验证相关的许多风险也同样适用于其他方法。

如果黑客可以访问您的电子邮件帐户,并且您正在使用魔法链接进行无密码身份验证,他们将能够轻松登录。但是,如果您使用常规密码,则此风险也是相同的。恶意行为者只需要点击“重置密码”并将重置链接发送到同一电子邮件地址即可。

最后,与任何其他系统一样,无密码身份验证系统也容易受到直接攻击,以破坏或规避安全措施。无论您采取多么安全的措施,存储和验证您的凭据的系统永远不会完全安全。

指纹验证和其他生物识别因素更难欺骗,但并非不可能,并且提供了一种非常安全的方式来授权自己。

无密码身份验证与多因素身份验证 (MFA)

多因素身份验证是一种在登录时使用多种身份验证因素的方法。这种情况的一个非常常见的例子是,当使用用户名和密码登录帐户时,然后会收到一个 6 位数的一次性验证码 (OTC) 来确认您的设备所有权。

在此示例中,OTC 因素是无密码的。相反,如果您要使用指纹和一次性验证码,那么您将拥有一个完全无密码的 MFA 设置。

如何在您的网站上实施无密码身份验证

将无密码身份验证集成到您的应用程序或网站中比以往任何时候都更容易。根据您现有的基础设施,您现在有很多选择:

  • 用户管理解决方案:这些提供商提供完全托管的服务,不仅提供传统和无密码身份验证,还提供用户管理和权限管理。

    • 何时使用:新的系统构建、初创公司和希望避免所有低价值和高风险开发工作的团队。
    • 何时不使用:如果您有一套非常定制的身份验证或用户管理要求,这些要求可能不适合他们的系统。
    • 提供商:Frontegg、Okta/Auth0、FusionAuth、Trusona、AppWrite
  • 身份验证服务提供商:这些服务提供用户身份验证、访问管理以及其他服务,例如会话管理。

    • 何时使用:您拥有现有的用户管理服务,并希望有人来处理密码和身份验证。
    • 何时不使用:您拥有有限的开发经验或资源。如果您有一个简单的身份和访问管理模型,您可能需要考虑上面提到的完全托管的解决方案。
    • 提供商:AWS Cognito、Google Identity Platform、Microsoft Azure AD

使用 React 进行无密码身份验证 – 速成教程

为了演示向您的用户引入无密码方法有多么容易,我们将带您完成一个使用名为 Frontegg 的提供商的 5 分钟教程。一个自助式端到端用户管理平台,除了其他用户管理功能外,还提供几种无密码登录方法。

构建登录和身份验证服务非常耗时,并且不会为用户流程增加价值,但如果您做错了,则可能会造成损害。随着提供身份验证的服务变得更好和更便宜,没有多少理由为您的应用程序构建自己的密码验证系统。

  1. 创建您的免费 Frontegg 帐户

通过他们的网站创建您的 Frontegg 帐户。在入门过程中,请务必选择魔法代码或魔法链接作为您的无密码选项!

What is Passwordless Authentication and How to Implement it

  1. 开始集成过程

完成登录框的创建并选择无密码方法后,您将看到一个“发布到开发”选项。

Frontegg 使用环境(开发、质量保证、暂存、生产),这些环境具有唯一的子域、密钥和 URL,用于您的身份验证环境。

您现在将被带到一个包含一些示例代码的页面,更重要的是,您的 baseURLclientID。请保持此页面打开,然后转到您的 IDE 进行下一步。

  1. 创建 React 应用程序(如果您已经有自己的应用程序,请跳过此步骤)

在您的终端中键入以下命令以创建一个新的 React 应用程序并导航到新目录。

<code>npx create-react-app app-with-frontegg
cd app-with-frontegg</code>
登录后复制
  1. 安装并导入 Frontegg

运行以下命令以安装 Frontegg React 库和 react-router。如果您的应用程序中已安装 react-router,则可以跳过安装。

<code>npm install @frontegg/react react-router-dom</code>
登录后复制
  1. 配置登录设置

在 src/index.js 文件中,添加以下代码。然后返回您的 Frontegg 页面,并从代码示例中找到 baseUrlclientID

注意:完成此入门流程后,这些值始终可以在您的工作区的管理部分找到。

import React from 'react';
import ReactDOM from 'react-dom'; // For react 17
// For react 18: import ReactDOM from 'react-dom/client';
import App from './App';
import './index.css';

import { FronteggProvider } from '@frontegg/react';

const contextOptions = {
  baseUrl: '## YOUR BASE URL ##',
  clientId: '## YOUR CLIENT ID ##'
};

// For react 18: 
// const root = ReactDOM.createRoot(document.getElementById('root'));
// root.render(
ReactDOM.render(
    <FronteggProvider contextOptions={contextOptions} hostedLoginBox={true}>
        <App />
    </FronteggProvider>,
    document.getElementById('root')
);
登录后复制
  1. 重定向到登录页面

使用 Frontegg useAuth hook,您可以确定用户是否已通过身份验证。如果用户未通过身份验证,您可以使用 useLoginWithRedirect hook 将用户重定向到登录页面(如下面的示例所示)。

<code class="language-javascript">import './App.css';
// import { useEffect } from 'react';
import { ContextHolder } from '@frontegg/rest-api';
import {
  useAuth, useLoginWithRedirect
} from "@frontegg/react";

function App() {
  const { user, isAuthenticated } = useAuth();
  const loginWithRedirect = useLoginWithRedirect();
  // Uncomment this to redirect to login automatically
  // useEffect(() => {
  //   if (!isAuthenticated) {
  //     loginWithRedirect();
  //   }
  // }, [isAuthenticated, loginWithRedirect]);
  const logout = () => {
    const baseUrl = ContextHolder.getContext().baseUrl;
    window.location.href = `${baseUrl}/oauth/logout`  
                            `?post_logout_redirect_uri=`  
                            `${window.location}`;
  };
  return (
    <div classname="App">
      {isAuthenticated ? (
        <div>
          <div>
            <img src="https://img.php.cn/upload/article/000/000/000/173916230294882.jpg" alt="What is Passwordless Authentication and How to Implement it ">
<p>单击“注册”,转到您的电子邮件并单击“激活我的帐户”。</p>
<p><img src="https://img.php.cn/upload/article/000/000/000/173916230376786.jpg" alt="What is Passwordless Authentication and How to Implement it "></p>
<p>当您要登录时,您只需输入您的电子邮件,等待六位数验证码到达即可登录。无需密码,无需担心。</p>
<p><strong>结论</strong></p>
<p>我希望本无密码身份验证指南不仅帮助您了解这项技术有多么易于使用,而且还了解它在未来几年将变得多么重要。</p>
<p><strong>无密码身份验证常见问题解答 (FAQ)</strong></p>
<h3>无密码身份验证的主要好处是什么?</h3>
<p>无密码身份验证提供了多种好处。首先,它增强了用户体验,因为用户不再需要记住复杂的密码。其次,它通过消除与密码相关的漏洞(例如暴力破解攻击、字典攻击和网络钓鱼)来提高安全性。最后,它降低了运营成本,因为企业不再需要投资于密码恢复和重置程序。</p>
<h3>无密码身份验证是如何工作的?</h3>
<p>无密码身份验证通过使用密码以外的因素来验证用户的身份。这些因素可以是用户知道的东西(例如 PIN 码)、用户拥有的东西(例如移动设备)或用户自身的东西(例如指纹)。系统会将一次性代码或链接发送到用户的设备,然后用户输入或点击该代码或链接以获得访问权限。</p>
<h3>无密码身份验证安全吗?</h3>
<p>是的,无密码身份验证通常比传统的基于密码的身份验证更安全。它消除了与密码相关的攻击和漏洞的风险。但是,与任何其他安全措施一样,它并非完全万无一失,应与其他安全措施结合使用以获得最佳保护。</p>
<h3>无密码身份验证可以用于所有类型的应用程序吗?</h3>
<p>无密码身份验证可以用于各种应用程序,包括 Web 应用程序、移动应用程序,甚至物联网设备。但是,无密码身份验证的适用性取决于应用程序的具体要求和安全需求。</p>
<h3>实施无密码身份验证的挑战是什么?</h3>
<p>实施无密码身份验证可能会带来一些挑战。这些包括用户接受度,因为一些用户可能抗拒变化;技术挑战,因为它需要对现有身份验证基础设施进行重大更改;以及监管挑战,因为某些法规可能要求使用密码。</p>
<h3>我如何在应用程序中实施无密码身份验证?</h3>
<p>实施无密码身份验证涉及几个步骤。首先,您需要选择正确的身份验证因素(例如生物识别或移动设备)。其次,您需要将此因素集成到您的身份验证过程中。最后,您需要教育您的用户了解新的身份验证方法及其好处。</p>
<h3>无密码身份验证的一些示例是什么?</h3>
<p>无密码身份验证的示例包括生物识别身份验证(例如指纹扫描或面部识别)、移动设备身份验证(例如短信代码或推送通知)和硬件令牌(例如安全密钥)。</p>
<h3>无密码身份验证是未来在线安全的未来吗?</h3>
<p>许多专家认为无密码身份验证是未来在线安全的未来。随着与密码相关的局限性和风险越来越明显,越来越多的企业正在转向无密码身份验证以增强安全性并改善用户体验。</p>
<h3>无密码身份验证可以与其他安全措施结合使用吗?</h3>
<p>是的,无密码身份验证可以并且应该与其他安全措施结合使用以获得最佳保护。这些可能包括加密、安全编码实践和定期安全审计。</p>
<h3>用户在无密码身份验证中的作用是什么?</h3>
<p>用户在无密码身份验证中起着至关重要的作用。他们需要保护其身份验证因素(例如其移动设备或生物识别数据)并了解潜在的安全威胁。他们还需要乐于采用新的身份验证方法来保护自身安全。</p>
</div>
</div>
</div></code>
登录后复制

以上是什么是无密码的身份验证以及如何实施它的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板