代理凭据中带域名的用户名
区分不透明的账户名与提供独立域字段的 API,不要仅为满足 URL 语法而更改账户身份。
一种说法是去掉 DOMAIN\,另一种说法是加上它。这两种改动对你的代理都可能是错的。
这里有两个问题:服务期望的是哪一种身份,以及所选 API 如何表示这种身份。
| 接口 | 需要确定什么 |
|---|---|
| 单一账户名字段 | 运营方接受的确切账户写法 |
| 带域字段的凭据 API | 域与用户名是否应分开提供 |
| URI 内的凭据组成部分 | 预期取值在该容器中应如何编码 |
例如,.NET 提供 NetworkCredential 构造函数,其用户名、密码和域是彼此独立的参数。不加区分地把域放进两个字段,并不是配置集成身份验证的可移植做法。
基本身份验证是另一种情况:服务器按其自身策略解释所提供的账户文本。处于同一网络并不证明域名前缀是隐含的。带域名的名称也不会自动变成另一种认证协议。
URL 转义应当保留预期账户,而不是改变它。源语言字符串中的反斜杠、账户名中的反斜杠,以及它在 URI 内的百分号编码表示,是彼此独立的层次。
从运营方取得被接受的身份形式和方案,然后使用相应的凭据接口。在短名、域名和形似电子邮件的名称之间随意切换,只会留下关于最初 407 的薄弱证据。