webauthn免密码身份验证
2019年05月26日

概述

Web 认证(Web Authentication,简称 WebAuthn)现已成为网上无密码登录的开放标准,现已成为正式 Web 标准。
WebAuthn 允许用户使用生物特征、移动设备或 FIDO 安全密钥登录在线帐户,而不是在账号密码框中键入一串串字符。Android 和 Windows10 已经支持 WebAuthn。浏览器方面,谷歌 Chrome、Mozilla Firefox 和 微软 Edge浏览器去年就已实现了对 WebAuthn 的支持。自2018年12月以来,苹果就在 Safari 的预览版中支持 WebAuthn。

坎坷

通俗的讲,webAuthn允许网页程序使用指纹认证,这是最吸引我的地方.现在的支付/确认场景中,涉及关键步骤,通过指纹确认一下,已经变得十分普遍.
但是在配置部署过程中,webAuthn的部署以及平台兼容性存在太大问题.

  1. chrome无法连续请求
ajax获取cred =>  await navigator.credentials.create(cred) => ajax验证

三步操作放在同一个函数内执行,没有问题,但是现在chrome提示ERR_NETWORK_CHANGE,firefox nightly版本正常.
2. 存在不同的验证方式,例如蓝牙/usb/指纹等等,对于手机来说,就是指纹认证,不排除有faceID的认证方式支持.但深究起来,android平台的认证方式是android-safetynet,服务端需要根据不同的认证方式,进行解析
3. 加密方式不同,存在不同的加密方式,同样需要根据不同的方式,进行验证

目前了解的就是这些,我会随时跟进这些信息

相关链接

Demo 列表
webauthn.io教程

Demo:

appspot
webauthn.io Demo
webauthn.me Demo

webauth介绍
https://medium.com/@herrjemand/introduction-to-webauthn-api-5fd1fb46c285
有关验证
https://medium.com/@herrjemand/verifying-fido2-responses-4691288c8770
android-safetynet
https://medium.com/@herrjemand/verifying-fido2-safetynet-attestation-bd261ce1978d

jwt 数据验证 对字符串tostring(‘utf8’)
https://jwt.io/

debug:
chrome://inspect/#devices

有关验证的部分代码
https://docs.microsoft.com/en-us/microsoft-edge/dev-guide/windows-integration/web-authentication

操作流程,后续注销登录
https://blog.arnellebalane.com/the-credential-management-api-7eb5650d23ca

流程介绍
https://medium.com/dev-channel/sign-in-on-the-web-credential-management-api-and-best-practices-d21aed14b6fe
https://codelabs.developers.google.com/codelabs/credential-management-api/#9

https://github.com/GoogleChromeLabs/credential-management-sample

幻灯片
https://slides.com/fidoalliance/jan-2018-fido-seminar-webauthn-tutorial#/
配套demo 使用fido验证,无法识别指纹
https://github.com/fido-alliance/webauthn-demo