Autenticação
Segurança
OAuth
JWT
Mobile
Login

应用程序身份验证:完整的安全和用户体验指南

应用程序身份验证:完整的安全和用户体验指南

身份验证是验证用户身份的过程。在应用程序中,它是体验的门户。身份验证实施不当会损害安全性并使用户感到沮丧。本指南介绍了实施安全、用户友好的身份验证的方法、协议和最佳实践。

什么是身份验证

身份验证回答了“你是谁?”的问题。它与授权不同,授权会回答“你能做什么?”用户通常使用他们知道的东西(密码)、他们拥有的东西(电话)或他们的身份(生物识别技术)来证明他们的身份。

身份验证的重要性

如果没有适当的身份验证,任何人都可以访问私人数据。泄密、欺诈和滥用都是可能的。产品声誉和用户信任受到威胁。

验证方法

用户名和密码

传统方法。实施简单,但如果密码较弱或存储不正确,则容易受到攻击。

社交登录

通过谷歌、苹果、Facebook 登录。对于用户来说速度很快,将安全性委托给值得信赖的提供商。减少注册过程中的摩擦。

魔法链接

通过电子邮件发送的链接,单击时进行身份验证。消除密码,但依赖于电子邮件访问。

OTP(一次性密码)

通过短信或电子邮件发送代码。短期有效。常见为第二因素。

生物识别

指纹、面容 ID。在支持它的设备上提供最大的便利。本地存储,而非共享存储。

密钥

消除密码的新标准。使用公钥加密技术。苹果、谷歌和微软都支持它。

协议和标准

OAuth 2.0

默认为委派授权。允许应用程序无需接收密码即可访问资源。社交登录基础。

OpenID 连接

[OAuth12.0 之上的身份层。将身份验证添加到授权流程中。

SAML

SSO 的企业标准。基于 XML。常见于企业环境中。

JWT(JSON Web 令牌)

带有签名声明的令牌。无状态,可由服务器验证,无需查询数据库。

典型的身份验证流程

  1. 用户提供凭据。
  2. 服务器验证并生成token。
  3. Token存储在设备上。
  4. 请求在标头中包含令牌。
  5. 服务器验证令牌并授权访问。

令牌:访问和刷新

访问令牌

用于访问 API 的短期令牌。很快就会过期(几分钟到几小时)。

刷新令牌

用于获取新访问令牌的长期令牌。安全保存。允许长时间会话而无需重新验证。

代币轮换

刷新令牌每次使用都会生成一个新的刷新令牌。如果其中一个被泄露,它将在下一次轮换时失效。

安全存储

iOS 钥匙扣

用于存储敏感数据的本机 API。由系统加密。用于令牌和凭证。

Android 密钥库

类似于钥匙扣。存储加密密钥并提供硬件保护(如果可用)。

加密的共享首选项

对于 Android,更简单的替代方案。加密 SharedPreferences 中的数据。

绝不是纯文本形式

不要将令牌存储在本地文件、日志或代码中。攻击者可以轻松提取它。

多重身份验证 (MFA)

这是什么

需要多种因素进行验证。例如,你知道的东西+你拥有的东西。

为什么使用

即使密码被泄露,攻击者也需要第二个因素。显着提高安全性。

常见实现

  • SMS OTP(安全性较低,易受 SIM 交换影响)。
  • 通过身份验证器应用程序(Google Authenticator、Authy)进行 TOTP。
  • 推送通知以批准登录。
  • 生物识别作为第二个因素。

登录安全

速率限制

限制登录尝试。防止暴力。

帐户锁定

多次失败后封锁帐户。与速率限制相结合。

验证码

区分人类和机器人。增加摩擦力,请谨慎使用。

异常检测

识别可疑登录:新位置、新设备、异常时间。需要额外验证。

用户体验

最小化摩擦

脚步越多,放弃就越多。社交登录和生物识别减少了摩擦。

提醒用户

长时间的会话会阻止频繁的重新身份验证。使用刷新令牌。

明确的反馈

具体错误消息(出于安全原因)。 “电子邮件或密码不正确”比“身份验证错误”更好。

帐户恢复

清晰的密码重置流程。电子邮件、短信或安全问题。

社交登录:优点和缺点

优势

  • 快速注册,更少字段。
  • 用户不再创建密码。
  • 提供商负责安全。

缺点

  • 对第三方的依赖。
  • 用户可能有隐私问题。
  • 如果提供商出现故障,登录将变得不可用。

良好实践

提供选项:社交+传统。允许链接多个方法。不要强制社交登录。

使用 Apple 登录

强制

如果应用程序提供社交登录,Apple 会要求其提供“使用 Apple 登录”功能。应用商店规则。

隐藏我的电子邮件

用户可以隐藏真实的电子邮件。应用程序从 Apple 接收中继地址。

实施

使用 AuthenticationServices 框架。与 [OAuth2 类似的流程。

万能钥匙:未来

他们是如何工作的

公钥/私钥对。私钥保留在设备上,从不传输。通过密码质询进行身份验证。

优势

  • 抵御网络钓鱼。
  • 没有密码可以泄露。
  • 在用户设备之间同步。

收养

苹果、谷歌和微软都支持它。 FIDO2/WebAuthn 标准。越来越多的采用。

会话和注销

会话管理

跟踪活动会话。允许用户查看和撤销。

安全注销

使服务器上的令牌无效。擦除设备中的敏感数据。

不活动超时

闲置一段时间后注销。平衡安全性和便利性。

常见错误

纯文本密码

切勿在未经哈希处理的情况下存储密码。使用 bcrypt、scrypt 或 Argon2。

没有过期令牌

永恒的代币就是风险。始终设置过期时间。

仅客户端验证

所有验证都必须在服务器上进行。客户可以被操纵。

泄露错误信息

“用户不存在”与“电子邮件未注册”泄露信息。通用。

结论

安全身份验证平衡了保护和用户体验。使用既定协议、实施 MFA、正确存储代币并最大程度地减少摩擦。万能钥匙代表着未来,但密码仍然占据主导地位。为当今的现实而构建,同时为进化做好准备。

##常见问题解答

1) 智威汤逊安全吗? 是的,如果实施正确的话。使用 HTTPS、验证订阅、设置较短的过期时间。

2) 我应该提供短信登录吗? 作为第二个因素,有总比没有好。但 TOTP 验证器比 SMS 更安全。

3) 必须使用 Apple 登录吗? 如果您提供任何社交登录,是的。这是应用商店的规则。

4) 访问令牌应持续多长时间? 这取决于上下文。 15-60 分钟是常见的。刷新令牌更新会话。

5) 生物识别技术用于身份验证安全吗? 是的。生物识别数据保留在设备上并且永远不会传输。既方便又安全。

另请阅读

  • [应用程序中的身份验证 - 使用清单的最佳实践3
  • [应用程序中的社交登录:实施和最佳实践4
  • [社交登录实践:在应用程序中实施之前的决策路线图5
  • 【应用安全:移动防护指南6
  • [应用程序中的身份验证 - 最佳实践与示例7
  • [Android 原生开发:Kotlin 完整指南8