登录提示上的那个复选框看起来像客户端偏好,但在受管机器上,它往往是策略决定。Viscosity 的记住控件在部署允许存储时,会把凭据存进 macOS 钥匙串。传言说复选框永远由你自己决定。实际上,有三件彼此独立的事会阻止它,而其中只有一件与密码有关。

复选框实际存了什么

选择记住选项,就是要求客户端为那一个连接和账户保留该值。条目会进入钥匙串,之后的登录通过受支持的提示复用它,而不是通过隐藏的偏好设置。连接文件本身不会写入任何内容。这种分离也解释了为什么之后删除该条目会弹出提示,而不是损坏的配置。

保存的值是服务器本来就要执行的身份验证的一项输入。它不会改变网关的要求,不会绕过第二因素,也不会把一次性代码变成可重复使用的秘密。它缩短的是输入,而不是部署对该账户施加的策略。

为什么这个控件可能不存在

管理员可以针对受管安装禁用凭据保存,SparkLabs 在凭据存储指南中记录了记住控件及其钥匙串行为。当复选框不存在时,它并没有坏,去找一个能覆盖它的偏好命令是错误的应对。

转而询问所有者适用哪种受支持的工作流。禁止存储的部署通常有原因,原因往往是账户共享、设备不受信任,或者凭据需要按计划过期。绕过该设置会把一项有意的控制变成事故,而事故通常还附带别人的审计。

在非受管安装上,缺少控件是一个附带版本号的支持问题。请发送已安装的客户端版本以及提示实际显示的内容,而不是猜测隐藏的默认值。

三种并不相同的提示

一次性代码不是密码,密码不是钥匙串授权,服务器拒绝也不是这三者中的任何一个。把它们混为一谈,会在真正的问题是字段、对话框或路由时,产生看起来像凭据错误的失败。

钥匙串对话框按设计是本地行为。它询问这个应用能否在这台机器上读取这个条目,批准它对 VPN 服务器没有任何意义。

正因如此,拒绝对话框会产生服务器永远看不到的客户端侧失败,而错误密码会产生客户端只能报告的服务器侧拒绝。回答之前先读对话框,并确认请求方应用是你预期的客户端,而不是安装器或辅助进程。这个区别在共享机器上最重要,因为条目可能被不止一个账户访问。

第二因素在这之外。保存密码不会保存代码,而要求代码的部署仍然会在每次连接时要求它。测试时让这一步保持可见,因为悄悄跳过它的流程并不是你配置的流程。

在不重置其余部分的情况下恢复一组凭据

如果更改密码后身份验证失败,请针对那一个连接使用客户端有文档说明的重新提示与更新路径,而不是手动编辑钥匙串。在替换任何内容之前先读消息,因为超时、证书被拒或缺少路由,并不能靠覆盖已保存的密码来修复。反复这样做主要会让你习惯于忽略客户端显示的错误。更新受影响的凭据,然后重新连接,观察出现的是哪一个提示。

支持论坛建议的整串钥匙串重置,是比问题大得多的改动。一个连接的已保存密码与另一个连接的证书毫无关系,而清空一切会把一个过期条目变成一整个下午的重新注册。

最后通过正常控件断开并重新连接,确认使用的是预期账户,并确认删除已保存条目会弹出提示而不是失败。可预测的复用,加上一条更新或删除凭据的清晰路径,才是值得测试的结果。

相关文章