Android第三方Passkey管理器探索
前言
相信经常在国际互联网冲浪的友友对Passkey一定不陌生,Google,GitHub等网站均支持Passkey一键登录,国内手机厂商也有推行Passkey的趋势(?)
众所周知,国内很多手机厂商在以前都是管生不管养。基本上手机发售一年以后就别想着升级了,现在各大手机厂商稍微好一些。
然而,虽然系统是更新了,但是部分功能只有在新机型上才做适配,而本文的主角Passkey就是其中之一。
博主手中的OPPO Find X5虽然已经更新到ColorOS 15,但是Passkey功能仍然无法使用,仅在OPPO Find X6及其以上的机型才支持。
虽然可以通过插入Canokey等物理安全硬件来实现Passkey登录,但是我日常外出一般是不带这些安全硬件的(怕丢)。
并且我之前也吐槽过,既然通过Google的GMS都可以让我手机使用Passkey,为啥OPPO不支持。。。
探索过程
偶然间,看到一篇文章,说在Android 14中引入了Credential Manager API,该API可以用于集成密码管理工具,让密码管理工具来管理凭据,其中就提到了Passkey
https://developer.android.com/identity/sign-in/credential-provider?hl=zh-cn
在此之前Android的默认Passkey实现是在Google的GMS中,并且也是对接的Google的凭据管理器
当时看到这篇文章时博主手机系统还是ColorOS 14,系统为Android 14,但是在网上下载了一个测试Demo软件,发现并不支持Credential Manager API,应该是厂商还没适配好
毕竟当时我也吐槽过,OPPO自家的Passkey实现与凭据管理器只在系统自带的浏览器上能调用,在Edge和Chrome中均调用的Google的Passkey实现与凭据管理器。
但是Google的Passkey实现会将Passkey上传到云端,并不是保存在手机本地,因此对其安全性表示怀疑(虽然声称是使用屏锁进行端到端加密)
没办法,可以说手机的Passkey功能基本用不了(包括一些Fido的2FA),如果实在要用Passkey,只能临时拿Canokey捅手机“屁股”或者用NFC(Canokey Canary已解决NFC感应问题),调用Google的Passkey实现来通过认证。
Tips:这个实现可以调用不同的凭据来源(保存密码的实现),Google的Passkey实现可以通过USB和NFC读取我手中的Canokey硬件,而OPPO的Passkey实现NFC读不了,USB处于半残状态(现在已经是完全残废的情况了)
这个方案一直在用,直到ColorOS 15最近的一次更新,我发现现在无论是OPPO自家的浏览器,还是Edge,Chrome甚至是Firefox,都会调用OPPO自家的Passkey实现
这就严重影响我的使用体验,因为OPPO自家的Passkey实现只会调用自家的凭据管理器(密码本),而且对于外置硬件也是半残状态(Google的至少我还能用Canokey硬件)
但令我没想到的是,我在手机设置里找到了一个新页面“登录信息自动填充服务”,这个页面有个“密码管理服务”,包含“密码本”(OPPO 用于保存密码的软件,包含存储Passkey),“Authenticator”(微软的),“Google”
然后默认是打开了密码本的,Google的没有打开。
我想,这会不会就是问题所在,于是我把密码本的关了,把Google的打开,发现Edge可以用Google的Passkey实现了
看到剩下微软的那个authenticator,突然想到会不会更新后现在已经支持使用第三方凭据管理器了?
Tips:微软的authenticator已经宣布即将停止对密码管理功能的支持
于是下了个Bitwarden,发现确实新增了该选项
众所又周知,Bitwarden是可以自托管的,而且还有vaultwarden这种第三方项目来降低托管压力,所以临时先在本地服务器上建了个,尝试了一下,发现可以完美使用Passkey的
现状
原先情况:
Edge,Chrome->Android Passkey接口-> Google Passkey实现(默认)->Google密码管理器/外置硬件
OPPO浏览器->OPPO Passkey实现(第三方)->密码本(不支持)/外置硬件(残废)
现在:
Edge,Chrome-> Android Passkey接口->OPPO Passkey实现(默认)->Credential Manager API(在设置中选择)->密码本/Google/Bitwarden/外置硬件(残废)
Tips:OPPO浏览器仍然不支持Credential Manager。另外如果仅开启Google,则会调用到Google Passkey的实现
并且由于调用的是OPPO的Passkey接口,现在还支持跨设备使用(手机扫描电脑上的Fido二维码在电脑上进行登录或注册)
因为该功能需要使用服务器,所以原先Google的Passkey就用不了(可能因为安全设计原因,挂了代理也会在最后一步失败)
后记
主要是Bitwarden在断网情况下无法新增,读取Passkey好像也有点问题?感觉这点比keepass就差点
不过这也主要看客户端实现咯,像PC上的KeepassXC就不支持在无网情况下使用已连接过的远程的密码库,而在Android上的客户端Keepass2Android就支持无网使用已连接过的远程密码库
虽然现在Keepass本身已经支持保存Passkey,但是Keepass2Android目前还不支持使用Credential Manager API来保存(悲)
目前打算先用着Bitwarden,希望Keepass2Android作者能尽快更新这个功能吧
另外由于选择Bitwarden则会调用OPPO Passkey的实现,所以我的Canokey完全用不了,只能在要使用的时候再切换成Google的了(悲)
Use this card to join MyBlog and participate in a pleasant discussion together .
Welcome to GoodBoyboy 's Blog,wish you a nice day .