大多数应用最终都会撞上登录这件事带来的麻烦,而这些麻烦跟产品本身要解决的问题几乎没什么关系。 用户忘密码、复用同一套账号密码、找回账号时又卡住。开发者这边则要操心凭证安全、防暴力破解、会话管理。 这就是我开始研究无密码认证、以及 passkey 可能如何改变登录体验的原因。 思路很简单:用户每次登录时,不必再输入传统密码,也能证明自己的身份。 Passkey 通过 WebAuthn 这类标准使用公钥密码学。用户用兼容的设备或安全密钥完成认证,身份提供方验证认证结果并完成登录流程。 我很好奇这对开发者意味着什么:登录流程会怎么变、开发者需要做哪些配置、哪些责任仍然留在应用这边。 为了回答这些问题,我会研究 passkey 认证这项技术,并了解 Skycloak 的托管 Keycloak 方案。 无密码认证让用户不用输入传统密码就能登录账号。使用 passkey 时,浏览器和用户的认证器处理一次密码学挑战,身份提供方验证结果。 以下是开发者需要关注的要点: 正确实现 passkey 后,主要收益是更简单的登录体验加上较强的抗钓鱼能力。代价是开发者仍然需要仔细处理注册、找回、设备兼容性和会话安全。 一个登录框从外面看很简单:用户填凭证,服务器验证,应用开一个会话。复杂的地方全在出错的时候冒出来。 用户忘密码、攻击者拿泄露的凭证来试,账号找回流程如果设计得糙,本身就会变成安全缺口。 开发者还得保护存储的密码、限制重复登录尝试、确保重置链接不会被滥用。 对一个还在长大的应用来说,这些责任会持续产生安全维护工作,跟其他产品优先级抢时间。 这正是无密码认证派上用场的地方。Passkey 去掉了记住并输入可复用密码的需要,也就减少了暴露在常见密码相关攻击下的面。 但它并没有消除所有认证风险。账号找回、会话安全、授权、降级方案,这些仍然需要认真设计。目标是在不牺牲应用安全的前提下简化登录。 无密码认证指的是不需要用户输入传统密码的登录体验。实现路径有好几种,passkey 是个不错的起点,因为它把直白的用户体验和公钥密码学结合在了一起。 用户注册 passkey 时,认证器会生成一对公钥和私钥。私钥由认证器或 passkey 提供方保护,身份提供方则存下对应的公钥凭证。 登录时,身份提供方发出一个挑战,认证器用私钥响应,身份提供方验证这个响应。验证通过,用户就进入应用。 浏览器通过 WebAuthn 这个公钥认证的网页标准来处理这整套交互。 具体到设备上,用户可能用 Face ID、Touch ID、Windows Hello、设备 PIN 或兼容的安全密钥来确认身份。生物特征数据不会作为 WebAuthn 交换的一部分被发送给应用。
![]()
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.