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 loginUsername: xxx@xxx.comnpm WARN Name may not contain non-url-safe charsUsername: (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:passwordusername: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"的主要内容,如果未能解决你的问题,请参考以下文章

Http认证方式——Basic认证

Http认证方式——Basic认证

java实现HTTP Basic认证

Http Basic认证

HTTP认证之基本认证——Basic

(chap8 确认访问用户身份的认证) BASIC认证(基本认证)