Azure 工件私有 npm 源身份验证失败

Azure Artifacts Private npm Feed Authentication Failed

几个月前,我在 Azure Artifacts 中创建了一个私人 npm 提要。使用此提要的身份验证工作正常。

最近其他人开始使用此提要,但使用他们从 Azure Artifacts 生成的令牌进行身份验证对他们不起作用。安装 npm 时出现以下错误

npm ERR! Unable to authenticate, your authentication token seems to be

invalid. npm ERR! To correct this please trying logging in again with:

npm ERR! npm login

在 npm 调试日志中有这个错误

verbose stack Error: Unable to authenticate, need: Bearer, Basic realm="{{redacted url}}", NTLM


我们放在全局 .npmrc 文件中的身份验证令牌的结构似乎在 Azure Artifacts 中发生了变化

发件人:

; Treat this auth token like a password. Do not share it with anyone, including Microsoft support. This token expires on or before 27/02/2020.

; begin auth token

//{{redacted URL}}/_packaging/{{redacted user name}}/npm/registry/:_authToken={{redacted token string}}

//{redacted URL}}/_packaging/{{redacted user name}}/npm/:_authToken={{redacted token string}}

; end auth token

; Treat this auth token like a password. Do not share it with anyone, including Microsoft support. This token expires on or before 14/04/2020.
; begin auth token
//{{redacted url}}/npm/registry/:username={{redacted username}}
//{{redacted url}}/npm/registry/:_password={{redacted password}}
//{{redacted url}}/npm/registry/:email=npm requires email to be set but doesn't use the value
//{{redacted url}}/_packaging/{{redacted username}}/npm/:username={{redacted user name}}
//{{redacted url}}/_packaging/{{redacted username}}/npm/:_password={{redacted password}}
//{{redacted url}}/_packaging/{{redacted username}}/npm/:email=npm requires email to be set but doesn't use the value
; end auth token

当使用第二个令牌(或者实际上是我现在从 Azure Artifacts 生成的任何令牌)时,我们无法 npm install,我们会收到如上所示的错误。如果其他人使用与我相同的令牌(旧格式),则效果很好。但是这个令牌很快就会过期。

我尝试提供一个电子邮件地址而不是字符串“npm 需要设置电子邮件但不使用该值”,但这也没有用。

这可能不相关,但我们最近从 tfs 版本 16.131.28507.4 升级到 Azure Devops Server 版本 Dev17.M153.3。

有谁知道为什么身份验证令牌格式发生了变化? And/Or 如何让新令牌与我的私人供稿一起使用?


npm 版本:6.13.0

节点版本:10.12.0

Azure Devops 服务器版本:Dev17.M153.3

我不确定这是否会导致您的问题 - 在我们的 azure devops 实例上,我们最近启用了条件访问,它可以禁用许多基于 PAT/token 的身份验证流而没有明确的错误消息 -例如如果您在正常 machine/access 路由之外使用令牌(我们正在将令牌传递给我们无法使用 2FA 进行身份验证的构建服务,并且它只是在一夜之间停止工作)

经过进一步调查并与 Microsoft Azure 支持人员交谈后,我们确定了导致问​​题的原因。

如果您的 TFS (Azure Devops) 实例托管在 运行 IIS 基本身份验证的计算机上,则为 Azure Artifacts 推出的新令牌格式将不再有效。这可能只适用于在本地托管他们的 TFS 实例的人。

唯一可用的解决方法是修改此新令牌并将 TFS 用户的用户名和 base 64 编码密码放入令牌字符串中 registry/:username=registry/:_password= 字符串之后的两个位置出现。这并不理想,因为您实际上必须在构建服务器上以几乎纯文本的形式存储密码。 但如果您确实需要启用 IIS 基本身份验证,这似乎是您现在唯一的选择。禁用此功能并使用不同的身份验证方案确实可以修复令牌身份验证,您可以避免执行上述操作。