告别密码时代!无密码身份验证的安全性与便捷性
核心要点:
无密码身份验证是一种用户无需密码或密钥即可登录系统或应用程序的用户管理方法。它通过所有权因素(例如电子邮件帐户)或固有因素(例如面部识别)来验证用户的身份,而不是使用基于知识的因素(例如密码)。
此文章是与Frontegg合作创建的。感谢您支持使SitePoint成为可能的合作伙伴。
许多身份验证方法被用作密码的替代方案:
无密码身份验证的普及
您可能已经在不知不觉中使用了“无密码身份验证”。许多银行应用程序使用指纹和语音识别来验证用户。 Slack 则以使用魔法链接来验证用户而闻名。
过去几年,无密码身份验证的使用稳步增长。身份验证提供商 Auth0 预测,无密码身份验证将在 2027 年超越密码的使用。 Gartner 预测,到 2022 年,“60% 的大型和全球性企业以及 90% 的中型企业将在超过 50% 的用例中实施无密码方法——高于 2018 年的 5%”。
网络巨头也在尽最大努力加速这项技术的采用。在 2022 年的世界密码日,谷歌、微软和苹果宣布了他们扩大对创建的通用无密码登录标准的支持的计划。
2022 年 6 月,苹果宣布了他们的新“密码密钥”功能,用于登录网站和应用程序。此公告实际上意味着苹果将使用 Touch ID 或 Face ID 为该网站创建数字密钥。这样就无需创建和写下密码。
无密码身份验证的优势
无密码身份验证提供安全性和用户体验优势:
无密码身份验证的局限性
无密码身份验证并非完美无缺,从安全性和体验的角度来看,它也有一些局限性。
依赖任何单一因素进行身份验证(无论是否有密码)都会带来一定程度的风险。我们建议尽可能使用多因素身份验证 (MFA)。
无密码身份验证安全吗?
是的,无密码身份验证被认为是安全的,但它并非完全没有风险。没有密码的帐户不必担心密码落入恶意人员手中。这可能是通过数据泄露、暴力破解攻击、设备丢失或错放的便利贴发生的。
与无密码身份验证相关的许多风险也同样适用于其他方法。
如果黑客可以访问您的电子邮件帐户,并且您正在使用魔法链接进行无密码身份验证,他们将能够轻松登录。但是,如果您使用常规密码,则此风险也是相同的。恶意行为者只需要点击“重置密码”并将重置链接发送到同一电子邮件地址即可。
最后,与任何其他系统一样,无密码身份验证系统也容易受到直接攻击,以破坏或规避安全措施。无论您采取多么安全的措施,存储和验证您的凭据的系统永远不会完全安全。
指纹验证和其他生物识别因素更难欺骗,但并非不可能,并且提供了一种非常安全的方式来授权自己。
无密码身份验证与多因素身份验证 (MFA)
多因素身份验证是一种在登录时使用多种身份验证因素的方法。这种情况的一个非常常见的例子是,当使用用户名和密码登录帐户时,然后会收到一个 6 位数的一次性验证码 (OTC) 来确认您的设备所有权。
在此示例中,OTC 因素是无密码的。相反,如果您要使用指纹和一次性验证码,那么您将拥有一个完全无密码的 MFA 设置。
如何在您的网站上实施无密码身份验证
将无密码身份验证集成到您的应用程序或网站中比以往任何时候都更容易。根据您现有的基础设施,您现在有很多选择:
用户管理解决方案:这些提供商提供完全托管的服务,不仅提供传统和无密码身份验证,还提供用户管理和权限管理。
身份验证服务提供商:这些服务提供用户身份验证、访问管理以及其他服务,例如会话管理。
使用 React 进行无密码身份验证 – 速成教程
为了演示向您的用户引入无密码方法有多么容易,我们将带您完成一个使用名为 Frontegg 的提供商的 5 分钟教程。一个自助式端到端用户管理平台,除了其他用户管理功能外,还提供几种无密码登录方法。
构建登录和身份验证服务非常耗时,并且不会为用户流程增加价值,但如果您做错了,则可能会造成损害。随着提供身份验证的服务变得更好和更便宜,没有多少理由为您的应用程序构建自己的密码验证系统。
通过他们的网站创建您的 Frontegg 帐户。在入门过程中,请务必选择魔法代码或魔法链接作为您的无密码选项!
完成登录框的创建并选择无密码方法后,您将看到一个“发布到开发”选项。
Frontegg 使用环境(开发、质量保证、暂存、生产),这些环境具有唯一的子域、密钥和 URL,用于您的身份验证环境。
您现在将被带到一个包含一些示例代码的页面,更重要的是,您的 baseURL
和 clientID
。请保持此页面打开,然后转到您的 IDE 进行下一步。
在您的终端中键入以下命令以创建一个新的 React 应用程序并导航到新目录。
<code>npx create-react-app app-with-frontegg cd app-with-frontegg</code>
运行以下命令以安装 Frontegg React 库和 react-router。如果您的应用程序中已安装 react-router,则可以跳过安装。
<code>npm install @frontegg/react react-router-dom</code>
在 src/index.js 文件中,添加以下代码。然后返回您的 Frontegg 页面,并从代码示例中找到 baseUrl
和 clientID
。
注意:完成此入门流程后,这些值始终可以在您的工作区的管理部分找到。
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') );
使用 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中文网其他相关文章!