Logo Logo
GitHub Designed by Logto

什么是认证 (Authentication, AuthN)?

认证 (Authentication, AuthN) 是一种内置于软件中的机制,用于在授予资源访问权限之前根据用户的凭据识别用户。例如,最常见的登录方法涉及电子邮件和密码。系统使用这些凭据来验证用户是否具有正确的身份以访问它。

身份与访问管理 (Identity and access management, IAM) 的背景下,认证是关于验证身份的所有权,而不是识别其背后的人或实体。例如,如果家庭成员使用你的凭据登录,他们不是你,但系统将他们识别为相同的身份。

身份不仅可以代表用户,还可以代表服务或设备。例如,一个服务可以使用 API 密钥 (API key) 向另一个服务进行认证。

随着技术的发展,认证方法变得更加先进和多学科。虽然这个术语听起来很技术性,但它是网络安全的关键概念,因为所有应用程序和软件都依赖认证来确保用户信息的安全及其对系统的访问。

认证 (Authentication, AuthN) 因素

认证 (Authentication, AuthN) 因素 是在认证过程中用于验证用户身份的证据类别。它们有助于确保只有授权用户才能访问系统或资源。这些因素通常分为三种主要类型,通常称为“三因素认证”。

  • 知识因素:你知道的东西(例如,密码,PIN)
  • 持有因素:你拥有的东西(例如,智能手机,安全令牌)
  • 固有因素:你是什么(例如,指纹,面部识别)

以下是两个示例:

多因子认证 (Multi-factor authentication, MFA) 是一种常见做法,它结合了多种因素以提高安全性。例如,当你登录银行账户时,你可能需要提供密码(知识因素)和来自认证器应用程序的一次性代码(持有因素)。

密钥 (Passkey) 是一种现代认证因素,可以结合多种因素并且能够抵御网络钓鱼攻击。

常见的认证 (Authentication, AuthN) 类型有哪些?

在介绍了关键组件和认证因素之后,让我们继续讨论认证类型。系统和产品使用各种认证方法,这些方法在定义和用户理解上可能会有重叠。在选择认证方法时,关注产品的需求,并努力在用户体验和安全性之间取得平衡。

密码认证

密码认证 是一种广泛使用的方法,用于在访问系统或应用程序时验证用户的身份。它要求用户提供电子邮件地址或其他类似标识符(如用户名和电话号码),作为唯一标识符,以及密码(只有用户知道的秘密字符串)以确认他们对电子邮件的所有权。

该过程始于用户在登录表单中输入其电子邮件和密码。然后,系统将这些凭据与其注册用户数据库进行检查。如果凭据匹配,则授予用户访问权限;如果不匹配,则拒绝访问。成功认证后,系统可能会创建一个会话或发出一个令牌以保持用户的登录状态。

这种方法简单且广泛支持,使用户易于理解和使用。然而,它也带来了挑战。密码可能会通过网络钓鱼、暴力攻击或数据泄露而被泄露。此外,用户可能会发现记住不同服务的多个密码很不方便。为了解决这些问题,电子邮件和密码认证通常通过安全措施(如双因素认证 (2FA))得到增强,增加额外的验证层,或鼓励使用强大、唯一的密码并安全管理。

尽管面临挑战,电子邮件和密码认证仍然是身份验证的基础方法,通常与其他措施结合使用以提高安全性。

无密码认证

无密码认证可以从不同角度理解。广义上,它指的是任何不依赖密码的用户认证方法。无密码认证 是一种无需传统密码即可验证用户身份的方法。相反,它依赖于替代技术和因素来安全地认证用户。这些方法包括通过电子邮件或短信发送的 一次性密码 (One-time password, OTP) 或认证器应用程序、生物识别认证(如指纹或面部识别)、发送到用户电子邮件的魔法链接、存储在设备上的 passkey,或使用来自 Google 或 Facebook 等提供商的账户进行社交登录。

这种方法通过减少与密码相关的风险(如网络钓鱼、暴力攻击和泄露)来提高安全性。它还通过消除记住和管理密码的需要来改善用户体验,同时通过减少密码重置请求来降低维护成本。

社交认证

社交认证 是一种通过允许用户使用其现有的社交媒体或身份提供者平台(如 Google、Facebook、Twitter 或 LinkedIn)的凭据登录应用程序或网站来验证用户身份的方法。用户无需为每个应用程序创建新的用户名和密码,而是可以使用他们已经信任的账户进行认证。

当用户选择社交登录选项时,他们会被重定向到所选平台以确认其凭据。一旦认证成功,平台会向应用程序提供令牌或用户信息(如姓名、电子邮件地址或个人资料图片)以验证其身份。这个过程是安全的,并且通常简化了用户的登录体验。

社交认证减少了用户的摩擦,通过利用 身份提供者 (Identity provider, IdP) 的基础设施提高了安全性,并允许应用程序快速收集经过验证的用户数据。它在优先考虑访问便利性和与社交平台集成的应用程序中特别受欢迎。

多因素认证

多因子认证 (Multi-factor authentication, MFA) 是一种安全过程,要求用户使用两个或多个不同的认证因素来验证其身份。这些因素通常分为三类,就像我们上面提到的认证因素一样:你知道的东西,你拥有的东西,以及你是什么。

通过结合多个因素,MFA 显著增强了安全性。即使一个因素(如密码)被泄露,额外的验证层也使未经授权的用户更难获得访问权限。

MFA 广泛用于需要更高安全级别的系统中,如在线银行、企业网络、财务敏感产品和云服务。它不是一种认证方法,而更准确地说是一种认证的安全措施。

生物识别认证

生物识别认证 是一种基于独特的物理或行为特征验证用户身份的安全过程。这些特征,如指纹、面部特征或语音模式,是高度个体化且难以复制的,使这种方法安全可靠。

该过程始于注册,用户的生物识别数据被捕获并安全存储为参考。在认证过程中,系统捕获用户的实时生物识别数据并将其与存储的参考进行比较。如果数据匹配,则授予访问权限;否则,拒绝访问。

这种方法很方便,因为用户不需要记住密码或携带物理令牌。它广泛用于智能手机、银行应用程序、安全设施和医疗系统等应用中,以提供快速、可靠和用户友好的访问。

企业单点登录 (SSO) 与身份提供者 (IdP)

企业 SSO(Enterprise SSO) 身份提供者 (Identity provider, IdP) 允许用户登录一次即可访问多个应用程序或服务,而无需重新认证。IdP 是一个管理用户身份并处理认证的可信服务。

其工作原理如下:

  1. 用户通过 IdP(例如,Google 或 Azure AD)登录。
  2. IdP 认证用户并发出令牌或断言。
  3. 令牌与其他连接的应用程序或服务共享,以便在无需额外登录的情况下授予访问权限。

这种设置简化了用户访问,同时集中管理身份以提高安全性。

机器对机器认证

机器对机器 (Machine-to-machine) 认证是一个验证设备、应用程序或服务之间通信身份的过程,无需人工参与。它确保机器之间的安全交互,通常在物联网 (IoT) 环境、API 或基于云的服务中。

在 M2M 认证中,与传统用户认证使用用户名和密码不同,机器依赖于安全凭据,如 API 密钥、证书或令牌(例如, OAuth 2.0 )。这些凭据用于验证机器或服务是否被授权访问另一台机器或资源。

例如,当移动应用程序与云服务器通信以检索用户数据时,服务器使用 API 密钥或令牌对应用程序进行认证,以确认它是合法客户端。同样,在物联网中,智能恒温器或可穿戴设备等设备使用证书或安全令牌与其控制系统或数据服务器进行认证。

M2M 认证对于确保自动化系统中的数据安全和信任至关重要,尤其是在交换敏感信息的环境中。

实施认证 (Authentication) 的最佳实践和关键原则是什么?

实施认证功能需要关注关键原则。强烈建议使用可信协议,如 OAuth 2.0 或 OpenID Connect,并加密敏感数据。此外,提供社交登录、无密码方法(如 passkey)以及支持各种认证方法(如用户名/密码、生物识别或 SSO)的选项,有助于系统满足不同用户的需求。

OIDC、SAML 和 OAuth 2.0 中的认证 (Authentication)

建议使用经过验证的框架和协议,而不是构建自有的认证系统,因为它们已经过安全专家的测试和审查。有多种认证框架和协议定义了如何执行认证。两个常见的例子是:

框架的选择取决于你的用例和需求。对于新应用程序,推荐使用 OIDC,因为它具有现代设计并支持 JSON Web Token (JWT)

然而,直接使用这些协议仍然可能复杂且耗时。这两个协议都有陡峭的学习曲线,并需要仔细实施以确保安全。相反,使用支持或基于这些协议的 身份提供者 (Identity provider, IdP) 可以大大简化认证过程。一个好的身份提供者还将为你的未来需求提供额外功能,如 多因子认证 (Multi-factor authentication, MFA) 单点登录 (Single sign-on, SSO)

AuthZ 与 AuthN 的区别是什么?

在讨论 AuthN 时,AuthZ 自然会进入讨论。认证 (AuthN) 确认身份,通过密码或生物识别等凭据回答“你是谁?”的问题。授权 (AuthZ) 确定“你能做什么?”,通过基于角色或策略授予或拒绝访问。AuthN 首先验证身份,然后由 AuthZ 管理权限。

举个例子,当你使用用户名和密码登录你的电子邮件账户时,这就是认证 (AuthN)——证明你是谁。一旦登录,系统根据你的角色决定你是否可以阅读电子邮件、发送消息或访问管理设置。这就是授权 (AuthZ)——定义你被允许做什么。

另请参阅