看了半天api文档,感觉云里雾里,说一下我对windows hello的理解。
------
首先是用户
微软用户需要设置pin或windows hello登陆,用户通过密码或刷脸验证ms账户,用户需要提供唯一用户标识符(比如电子邮箱)注册第三方账户,并生成密钥。在本地计算机上,一个密钥就代表了用户本人创建了用户标识符所需的密码。hello相当于一个密码箱。例如:
---
电子邮箱1 密钥对1
电子邮箱2 密钥对2
电子邮箱3 密钥对3
---
密钥对为公钥和私钥,公钥相当于用户密码,发送给服务器。私钥存储在本地计算机用于验证服务器公钥,私钥不可读取只能验证。
------
其次是登录过程
一个用户可以有多个设备。对于一台设备,生成的每一个密钥对都是唯一的。
创建的app属于第三方,hello根据用户唯一标志(比如电子邮箱)已经生成了加密信息对,随后用户登陆时只需要提供唯一标识符,如电子邮箱地址,刷脸验证后就可获得对应的公钥,相当于获得密码。
因此对于服务器的登陆模式从原来的:
唯一标志(比如用户名/电子邮箱)-密码
变成:
唯一标志(比如用户名/电子邮箱)-公钥 的登陆模式。
------
据此,第三方app一定要储存用户唯一标志,即是用户,然后通过获得公钥作为密码登陆。在服务器端,需要根据公钥和唯一标志来查找和验证用户,一个用户可以有多个设备,意味着一个用户可以有很多公钥,这是和密码登陆模式不一样的地方,需要储存多个设备和公钥。
------
另外 服务器还可以将已经存储的公钥发回给app进行验证,在本机上和私钥配对验证。私钥和公钥配对的验证也还需要刷脸,用来验证服务器上一些受保护的操作。证明是不是你自己等等。
参考资料:
https://docs.microsoft.com/zh-cn/windows/uwp/security/microsoft-passport
实例:
待续