Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Proxy 如何使用身份验证代理为Visual Studio代码指定用户id和密码?_Proxy_Visual Studio Code - Fatal编程技术网

Proxy 如何使用身份验证代理为Visual Studio代码指定用户id和密码?

Proxy 如何使用身份验证代理为Visual Studio代码指定用户id和密码?,proxy,visual-studio-code,Proxy,Visual Studio Code,如何使用身份验证代理为Visual Studio代码指定用户id和密码 我已经在主VS代码站点上看到了,但这只提到了两个设置 "http.proxy": "http://10.203.0.1:5187/" "http.proxyStrictSSL": false 我已经设置了这些,但仍然没有运气,例如,我无法安装扩展。。。连他们的名单都找不到 我怀疑这是我们的代理,因为它需要用户id和密码:-( 那么如何设置这些值呢?在代理url内设置凭据: http://username:password@

如何使用身份验证代理为Visual Studio代码指定用户id和密码

我已经在主VS代码站点上看到了,但这只提到了两个设置

"http.proxy": "http://10.203.0.1:5187/"
"http.proxyStrictSSL": false
我已经设置了这些,但仍然没有运气,例如,我无法安装扩展。。。连他们的名单都找不到

我怀疑这是我们的代理,因为它需要用户id和密码:-(


那么如何设置这些值呢?

在代理url内设置凭据:

http://username:password@10.203.0.1:5187/

警告:在文件中以明文形式设置密码很容易导致您的帐户被泄露。此外,这可能违反您公司的数据安全准则。

如果您不想将凭据存储在设置文件中,可以使用fiddler将呼叫代理给代理。此外,我相信以上所述仅适用于使用基本身份验证的代理服务器,以下内容适用于NTLM

VSCode打开设置文件:

%APPDATA%\Code\User\settings.json

添加以下内容:

{
    "http.proxy": "http://127.0.0.1:8888",
    "http.proxyStrictSSL": false
}
小提琴手确认小提琴手设置:

提琴手确保提琴手设置为自动验证:

VSCode扩展现在应该联机:


更新

在版本1.15中实现后,现在不再需要此功能

就我而言,我仍然需要补充:

"http.proxyStrictSSL": false
“http.proxy”:”。
不要忘记添加端口。

我最喜欢的回答是David Martin关于使用Fiddler的建议。但如果您不想这样做,下面是如何设置代理的凭据

要指定域+用户名+密码:(可能无法使用斜杠,因此请使用%5C代替斜杠,如下所示)

要仅指定用户名+密码,请执行以下操作:

// The proxy setting to use. If not set will be taken from the http_proxy and https_proxy environment variables
"http.proxy": "http://username:password@proxy_name_or_ip:port",
"https.proxy": "http://username:password@proxy_name_or_ip:port",

// Whether the proxy server certificate should be verified against the list of supplied CAs.
"http.proxyStrictSSL": false,

请参考这篇文章。

假设我的NTLM登录名是DOMAIN\User Name,密码是P@ssword! 凭据的格式需要是域\用户名:P@ssword!,但您需要对用户名和密码进行URL编码。 一个简单的在线编码URL可以将您的用户名和密码转换为:域%5CUser%20Name和P%40ssword!。 将所有这些信息拼成一个字符串,如下所示: 然后将其添加到文件“http.proxy”值的首选项中的用户设置中: //将设置放在此文件中以覆盖默认设置 { “http.proxy”:”
}

尊敬的CNTLM可以帮助您。您可以向它提供您的凭据,告诉它上游代理,在本地计算机上运行它,然后将VS指向位于的代理

对于任何不支持经过身份验证的代理的应用程序,它都是一个方便的解决方案。

在Visual Studio代码(我的版本是1.32.3)中,您可以编写一个请求,即

### my request
GET https://defdomain.prefix.com/app/resource
Authorization: bXl1c2VyOnVzZXIyMkBwYXNzd29yZA==
因此,授权标头的类型为“BasicBase64Encoded”,包括
我的用户:user22@password(用户名:usercredentials)base64编码。仅此而已。

使用下面的命令替换您的代理:端口的用户名、密码和ip地址

PS C:\Users\rathakrishnan>npm配置集代理

PS C:\Users\rathakrishnan>npm安装-g@angular/cli


我非常喜欢David Martin使用Fiddler发布的解决方案(见下文),但是我想知道如何使用
http.proxyAuthorization
,考虑到您可以在
settings.json
文件中以base64编码格式保存凭据,下面是我的解决方案

<强>警告:< Base64编码格式的保存凭据肯定比纯文本好,但是将Base64编码视为混淆,而不是加密,并且帐户仍然可以被破坏——使用您自己的风险。考虑修改设置文件的ACL以减少对它的读取。 步骤1:使用以下代码对凭证进行编码:

var s = @"DOMAIN\user:pass";
var bytes = System.Text.Encoding.UTF8.GetBytes(s);
Console.WriteLine(Convert.ToBase64String(bytes));
RE9NQUlOXHVzZXI6cGFzcw==

步骤2:通过使用上面的base64编码值添加http.proxyAuthorization来更新VS代码设置:

{
    "https.proxy": "https://internal-proxy.corp.net:8080",
    "http.proxyAuthorization": "Authorization: Basic RE9NQUlOXHVzZXI6cGFzcw=="
}
步骤3:通过更新其ACL来保护
设置.json

由于您已在文件中存储凭据以提高安全性,因此可以通过删除本地管理员组来修改设置文件的ACL-确保只有您可以读取此文件。例如,我使用以下PowerShell脚本删除本地管理员组:


太好了,做得很好…现在为什么他们的文档中没有这样的内容:-(@SteveC我想这是因为这是一个基本访问身份验证的标准过程,名为url编码,但你可以建议他们将其包含在文档中。除了不起作用之外,在设置中使用明文形式的用户名和密码可能不好。使用CNTLM,你可以保存散列,而不使用它。我使用fiddler,但需要使用自定义规则…OnBeginRequest“如果(m_AutoAuth){oSession[“X-AutoAuth”]=“域\\用户名:密码”;}”如果vs代码像npm一样提供指定ca的设置,那就太好了,这样我们就不必将strictssl设置为false。请参阅github上的问题,下面的答案不再有效。相反,他们引入了一个名为“http.proxyAuthorization”的新配置参数,但这不起作用。
拒绝设置不安全的头“代理授权”
。已经有报道:reported并不意味着修复…甚至不表示已确认。4个多月后仍在等待修复。这对我来说在VSCode 1.9.1的公司防火墙后面是有效的。区别因素是URL编码建议。谢谢@Kiki.J.Hu。我使用了它,但仍然不起作用。还有什么别的吗?伙计,你救了我!我在字符串中使用了“\\”而不是“%5C”。我用“%5C”替换了反斜杠后,一切都正常了!非常感谢!:)
{
    "https.proxy": "https://internal-proxy.corp.net:8080",
    "http.proxyAuthorization": "Authorization: Basic RE9NQUlOXHVzZXI6cGFzcw=="
}
$settings = "$env:appdata\Code\$env:username\settings.json"
$acl = (Get-Item $settings).GetAccessControl('Access')
$acl.SetAccessRuleProtection($true,$true) # removes the ACL inheritance
$accesToRemove = $acl.Access | ?{ $_.IsInherited -eq $false -and $_.IdentityReference -eq 'BUILTIN\Administrators' }
$acl.RemoveAccessRule($accesToRemove)
Set-Acl -AclObject $acl $settings