Featured image of post 密码管理器折腾记:从微软背刺到 KeyGuard 真香

密码管理器折腾记:从微软背刺到 KeyGuard 真香

微软 Authenticator 下线了自动填充功能,我不得不踏上寻找新密码管理器的征程...

事情是这样的

话说前段时间,微软突然来了个「背刺」操作——Authenticator 的密码自动填充功能直接下线了1

更要命的是,想导出 OTP 密钥还得 root 手机… 这不是逼我找新家嘛 😅

开始我的「白嫖」之旅

本着「能免费绝不花钱」的优良传统,我经过一番折腾,最终锁定了 BitWarden

  • 个人免费使用
  • 可以自建服务器2

看起来很完美对吧?但是用了一段时间后,我发现了几个让人头疼的问题:

  1. 免费版不支持OTP自动填充
  2. Android 客户端 用起来总觉得差点意思,体验不够丝滑

救星出现了

正当我准备妥协的时候,在翻找第三方客户端的过程中,我发现了 KeyGuard

注意,KeyGuard 是一个第三方客户端,虽然支持 BitWarden 的 API,但并不是官方的客户端,请自行验证安全性。 不要使用来历不明的客户端,尤其是涉及密码管理的应用,务必谨慎选择和使用!

同时,下文可能混称 KeyGuard 和 BitWarden,请读者注意区分,KeyGuard 是一个第三方客户端, 而 BitWarden 是一个密码管理服务。KeyGuard 并不提供密码管理服务,而是通过兼容 BitWarden 的 API 来实现密码管理功能的客户端应用。

支持 Android、Windows、Mac、Linux 全平台,而且界面做得相当不错:

KeyGuard 桌面端截图

配置攻略

Android 端

  • GitHub Release 直接下载安装包(免费且功能完整)
  • Google Play 版本需要付费才能编辑(有点坑)

Windows 端

直接从 GitHub Release 下载最新版本的安装包,安装后即可使用。

浏览器扩展

想要 OTP 自动填充?没问题!可以修补官方浏览器扩展来实现。3

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
diff --git a/libs/common/src/billing/services/account/billing-account-profile-state.service.ts b/libs/common/src/billing/services/account/billing-account-profile-state.service.ts
index 7d256da971..bf8c6a3006 100644
--- a/libs/common/src/billing/services/account/billing-account-profile-state.service.ts
+++ b/libs/common/src/billing/services/account/billing-account-profile-state.service.ts
@@ -67,8 +67,8 @@ export class DefaultBillingAccountProfileStateService implements BillingAccountP
   ): Promise<void> {
     await this.stateProvider.getUser(userId, BILLING_ACCOUNT_PROFILE_KEY_DEFINITION).update((_) => {
       return {
-        hasPremiumPersonally: hasPremiumPersonally,
-        hasPremiumFromAnyOrganization: hasPremiumFromAnyOrganization,
+        hasPremiumPersonally: true,
+        hasPremiumFromAnyOrganization: true,
       };
     });
   }

具体操作可以参考这个项目:Sunsetvault

后记

在高强度使用了大概6个月之后,我有一些经验和感想想分享给大家:

在HyperOS3环境下如何设置为默认password manager

由于国行HyperOS魔改了系统设置4,导致可能需要一些特殊手段才能将KeyGuard设置为默认密码管理器。以下是一些可能的解决方案:

以下方法来自LinuxDo@L1Xu4n5,虽然主要针对Passkey,但同样适用于KeyGuard:

设备:红米K80Pro 系统:HyperOS3 3.0.3.0,安卓版本16

1.设置>指纹,面部与密码>智能密码管理>关闭 自动填充密码与通行密钥

2.设置>更多设置>语言与输入法>密码与账号

首选服务,先选择无,然后选择“小米智能密码管理”或“Google”或“Edge”

在其他服务中勾选Google,如果首选服务为Google,其他服务没有这一项,不需要勾选

回到Github登录界面,Use Passkey,成功调出窗口!

需要注意的是,经过我的实测,你可以先选择无,再选择Edge/Google,然后其他服务选择Keyguard, 最后再把首选服务切换到KeyGuard,这样就能成功设置KeyGuard为默认密码管理器了。

具体选择哪种方法可以根据个人习惯和系统版本来决定。

如何验证我的是否成功设置了?

你可以自行尝试在webauthn等支持Passkey的网站上登录,看看是否能够成功调出KeyGuard的登录界面。 如果能够成功调出,并且使用KeyGuard进行登录,那么就说明你已经成功设置了KeyGuard为默认密码管理器了。

如下图所示:

成功设置KeyGuard

死锁

请注意,不要使用KeyGuard的OTP功能来登录KeyGuard的账户,否则可能会导致死锁,无法登录KeyGuard了。

你可以备份你的KeyGuard OTP密钥,使用Google Authenticator等其他OTP工具来登录KeyGuard账户, 同时确保你的邮箱账户也有备份,确保能接受到KeyGuard的登录验证码。

为什么我的没有起效?

有案例称,你可能需要同时安装BitWarden官方APP才能成功使用KeyGuard的Passkey功能, 虽然我个人没有遇到过,但如果你在使用过程中遇到了问题,可以尝试安装BitWarden官方APP来看看是否能够解决问题。

同时有部分讨论称,Edge/Chrome等浏览器需要手动开启flag才能使用,以下引用自小米社区@故铃6

应急措施:手机 Chrome/Edge 浏览器,可通过将 Flags(chrome://flags/#web-authentication-android-credential-management)设置为 false, 临时改用浏览器内的凭据管理器,即可实现传统的 Passkey/MFA 体验,正常利用包括硬件密钥在内的 Passkey 进行认证,登录网站。 App 内的 Passkey 支持目前比较玄学,不能保证 100% 成功。

IIIA 标准声明

2
IIIA 2 AI参与制作
人类主导,AI用于提升效果
?
使用 Hugo 构建
主题 StackJimmy 设计