我正在尝试在我的 React Native Android 应用程序中通过假 VPN 进行代理设置。感谢 VpnService 和 android.net.ProxyInfo package,我将代理设置提供给构建器。 但我使用的代理有身份验证要求。我猜 ProxyInfo 不会直接获取凭据。我怎样才能做到这一点?
当我使用当前设置进入任何网站时,它会显示以下消息。
不是身份验证或无效的身份验证凭据。请务必更新您的代理地址、代理用户名和密码
我尝试了下面的其他方法,但我不能说它有效。当我尝试打开该网站时,我的浏览器通过弹出窗口询问我用户名和密码,但弹出窗口非常不稳定,我什至无法输入它。
Authenticator.setDefault(new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
Log.d("VPNService", "VPN Auth Settings...");
return new PasswordAuthentication("username", "password".toCharArray());
}
});
我应该补充一点,这个代理在某些地方不会特别工作。所以只要VPN有效,它就会是活跃的,需要一个全局的方法,而不仅仅是一个应用程序的效果。
我需要的是在使用 VPN 代理时如何提供身份验证信息?
提前感谢您的解释性答案
我要说“不”。
原因如下:
我查看了文档 -> https://developer.android.com/reference/android/net/ProxyInfo
它不允许您提供代理身份验证,传统上是用户名+密码。
它确实提供使用代理自动配置(.pac),但该配置格式也不允许您声明代理身份验证。
这项技术来自于Netscape vs. IE 5/6时代的浏览器战争。这甚至发生在 HTTPS 普及之前,更不用说需要了。 HTTP 身份验证和代理(通过 HTTP)身份验证都使用基本身份验证样式,该样式仅位于标头中。
有人担心让用户将密码保存到浏览器配置中,因此很长一段时间,两种身份验证只能通过交互式提示输入。
这也是在密码管理功能普及之前,但还可以使用单点登录。因此,用户通常只需要在浏览器会话中回答一次代理身份验证挑战,这很烦人,但并非难以忍受。
看起来这个 API 从那时起就没有扩展过。
在评论中建议解决方法之前,我会让大家理解这一点。