npm 错误!无法认证,需要:Basic realm="Artifactory Realm"
Posted
技术标签:
【中文标题】npm 错误!无法认证,需要:Basic realm="Artifactory Realm"【英文标题】:npm ERR! Unable to authenticate, need: Basic realm="Artifactory Realm" 【发布时间】:2021-10-14 08:50:02 【问题描述】:我尝试运行命令:
npm install -g @angular/cli@9.1.0
但我收到以下错误:
npm ERR! code E401
npm ERR! Unable to authenticate, need: Basic realm="Artifactory Realm"
npm ERR! A complete log of this run can be found in:
npm ERR! /Users/xxxx/.npm/_logs/2021-08-10T19_33_12_063Z-debug.log
注意:node js 和 npm 工作正常。
我已按照 Artifactory 中的说明使用以下命令解决此问题:
npm config set registry https://artifactory.......com/artifactory/api/npm/xxxx/
因为我已将以下内容粘贴到 ~/.npmrc 文件中:
_auth = fhgf......ghgj==
email = xxx@xxx.com
always-auth = true
我也尝试过使用npm login
,但出现以下错误,无法继续:
npm login
Username: xxx@xxx.com
npm WARN Name may not contain non-url-safe chars
Username: (xxx@xxx.com)
Username: (xxx@xxx.com)
Username: (xxx@xxx.com)
Username: (xxx@xxx.com)
我该如何解决这个问题?
【问题讨论】:
你能更新一下这个问题与领域数据库的关系吗? 添加注册表后尝试npm登录并尝试安装? 我已经尝试过npm login
我有以下错误并且无法继续:npm login
Username: xxx@xxx.com
npm WARN Name may not contain non-url-safe chars
Username: (xxx@xxx.com)
npm 客户端不允许电子邮件地址作为用户名。
【参考方案1】:
问题是由于用户名中的“@”特殊字符,我假设用户是基于 SAML 的。请按照以下步骤解决问题,
-
使用带有“curl -u : https://url/artifactory/api/npm/auth/”的 /api/npm/auth 端点生成身份验证令牌
将生成的块直接添加到.npmrc文件中
_auth = Auth-token-generated-from-1st-point
始终验证 = true
【讨论】:
1.更像:“curl -ujohndoe@company.com:Password url/artifactory/api/npm/auth” 其中 url=artifactory.company.com【参考方案2】:对我来说,问题是在 Dockerfile 中过早调用 USER myusername
,即使 .npmrc
文件已到位,它也会导致我的工件出现身份验证问题。
在npm i
为我解决了问题之后,只需将 USER 调用向下移动即可。
【讨论】:
【参考方案3】:2021 年 12 月更新
Artifactory 已移至仅支持 APIKEY。如果您的旧 _auth 是 username:password
或 username:encrypted_password
的 base64 编码,那么现在两者都是不可接受的。您必须使用 APIKEY 代替这些。
所以,现在支持的 _auth 变成了:
_auth: APIKEY
但具有讽刺意味的是,即使这样在某些情况下也不起作用。
以下似乎更可靠:
-
您需要获取您的用户名的base64字符串:APIKEY。您可以通过在 PowerShell 中运行以下命令来获取 base64
[System.Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes("username:APIKEY"))
-
无论输出是什么,在 .npmrc 文件的 _auth 变量中使用它(位于
%userprofile%\.npmrc
)
因此,最终文件如下所示:
registry=<URL>
_auth = <Base64 of username:APIKEY>
email = myemail@email.com
always-auth = true
【讨论】:
是否有指向此更改文档的链接?我现在正在寻找,当我找到时会发布 不知道有一个。我们在团队中发现了这个解决方案,它似乎对所有人都有效 谢谢@soccer7——它对我有用以上是关于npm 错误!无法认证,需要:Basic realm="Artifactory Realm"的主要内容,如果未能解决你的问题,请参考以下文章