如何使用 IIS 基本身份验证通过 Azure DevOps Server 2019 工件对 npm 进行身份验证

问题描述

我们有一个本地 Azure DevOps Server 2019,托管在 Windows Server 2012 R2 数据中心虚拟机和 IIS 8.5 上,启用了基本身份验证。我们一直在使用 Azure Artifacts 打包和提要来发布我们的 NuGet 包,为此我们使用 Windows 身份验证(开发人员使用他们的活动目录域用户名密码)。现在,我正在尝试使用 npm 的提要进行设置。

我使用 npm init 创建了一个新的 npm 项目,在 VS Code 中打开了包含文件夹并创建了一个 .npmrc 文件,正如 Azure Artifacts 告诉我的那样,然后尝试从上游包安装一个包。但我收到以下错误


0 info it worked if it ends with ok
1 verbose cli [
1 verbose cli   'C:\\Program Files\\nodejs\\node.exe',1 verbose cli   'C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js',1 verbose cli   'install',1 verbose cli   'sass-node'
1 verbose cli ]
2 info using [email protected]
3 info using [email protected]
4 verbose npm-session cfab4705708e8227
5 silly install loadCurrentTree
6 silly install readLocalPackageData
7 http fetch GET 401 http://(redacted domain name):8080/tfs/PAP%20Projects/_packaging/pap-front-end/npm/registry/sass-node 52ms
8 silly fetchPackageMetaData error for sass-node@latest Unable to authenticate,need: Bearer,Basic realm="http://(redacted local domain name):8080/tfs",Negotiate,NTLM
9 timing stage:rollbackFailedOptional Completed in 0ms
10 timing stage:runTopLevelLifecycles Completed in 99ms
11 verbose stack Error: Unable to authenticate,NTLM
11 verbose stack     at C:\Program Files\nodejs\node_modules\npm\node_modules\npm-registry-fetch\check-response.js:94:17
11 verbose stack     at processticksAndRejections (internal/process/task_queues.js:85:5)
12 verbose statusCode 401
13 verbose pkgid sass-node@latest
14 verbose cwd C:\Users\a.t@R_404_6460@vati\code\npm-test
15 verbose Windows_NT 10.0.17763
16 verbose argv "C:\\Program Files\\nodejs\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "install" "sass-node"
17 verbose node v12.9.0
18 verbose npm  v6.10.2
19 error code E401
20 error Unable to authenticate,your authentication token seems to be invalid.
21 error To correct this please trying logging in again with:
21 error     npm login
22 verbose exit [ 1,true ]


我没有故意编辑某些部分,以防它们存在问题。值得注意的是,我在互联网上搜索并发现了几个问答,尤其是在 stackoverflow 中,它们与我的问题很接近,但答案对我没有用。总的来说,我得到了以下提示

  • 启用基本身份验证后,您将无法使用 PAT
  • 您应该使用 Base64 对 Windows 密码进行编码,然后将其与用户名一起放入 .npmrc

我已经试过了,但仍然没有运气。我也不确定以下内容

  • 我应该只输入 username 还是应该使用 domain\usernameusername@domain 格式?
  • 我应该将密码的 Base64 编码字符串放在 .npmrc 中吗?
  • 网址有问题吗?域?议定书?集合名称或提要名称
  • 是否有可能只要我们保持启用基本身份验证,就没有机会进行设置?

此外,每当我尝试使用 npm login 时,它都会提示输入用户名密码和电子邮件,但随后返回 400 错误

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)