我应该如何使用人工访问令牌来访问 npm repo

Posted

技术标签:

【中文标题】我应该如何使用人工访问令牌来访问 npm repo【英文标题】:How should I use artifactory access token for access to npm repo 【发布时间】:2017-12-12 13:13:34 【问题描述】:

我想使用访问令牌从 CI 环境的人工 npm 存储库中发布和检索。我已经使用 artifactory API 创建了一个 Bearer 令牌,但是当我尝试使用它在 .npmrc 中使用以下格式进行访问时:

//mydomain.jrog.io/:_authToken=myveryverylongaccesstoken
registry=https://mydomain.jfrog.io/mydomain/api/npm/npm

我总是收到 401 错误。

此外,虽然可能是一个不同的问题,但如果我尝试将 npm login 与我的实际工件凭据一起使用,我会得到响应:

adduser Incorrect username or password
npm WARN adduser You can reset your account by visiting:
npm WARN adduser 
npm WARN adduser     https://npmjs.org/forgot
npm WARN adduser 
npm ERR! code E403
npm ERR! forbidden No oauth npm default login configuration found: org.couchdb.user:myusername

有关访问令牌的人工文档明确表示这是设置访问令牌的用例,但有关设置 npm 存储库的文档似乎暗示您需要一个真实的用户帐户并且没有提及访问权限令牌...

【问题讨论】:

【参考方案1】:

你的神器版本是什么?

“npm 登录”方式仅从 5.4(又名 _authToken)开始受支持,因此如果您低于此值,您唯一的机会就是使用 BASIC 身份验证(又名 _auth)进行身份验证。

基本身份验证相当容易设置,Artifactory 提供了一个简单的入口点来帮助您设置 .npmrc

启动以下命令(不要忘记将 user 和 encrypted_pa​​ssword 替换为您要进行身份验证的 Artifactory 用户帐户)

curl -u user:encrypted_password https://mydomain.jfrog.io/mydomain/api/npm/auth

它会输出类似的东西

_auth = YourLongBasicAuthToken always-auth = true email = user@server.com

将这 3 行复制到您的 .npmrc 中,这应该可以正常工作...

【讨论】:

谢谢,这是我的问题 :)【参考方案2】:
    使用基本身份验证 使用下面描述的步骤,您应该使用命令的输出更改本地 .nprmc 文件
要检索自动生成的下一个字段 _authemailalways-auth -> 运行以下命令直接从 Artifactory 检索这些字符串:

curl -u 用户名:API_key http://artifactory_server_domain/domain/artifactory/api/npm/auth

注意事项:

用户名 -> Name near Welcome when you are logged in - take a look at the attached screenshot

Api_key -> Copy and paste this key - take a look at the attached screenshot

artifactory_server_domain - 相应的工件的域。

domain - 网址中的附加域字段(如果存在)

Screenshot describes artifactory_server_domain and domain

【讨论】:

【参考方案3】:

其他答案中的 _auth 行中断了从 npmjs 检索一些范围包。我发现我需要为我正在使用的一个注册表使用特定的 _auth。在这里查看我的原始答案https://***.com/a/57014522/442837

【讨论】:

【参考方案4】:

要生成 .npmrc 的内容,请使用现有用户(如 admin)及其密码

curl -uadmin:<PASSWORD> http://<ARTIFACTORY_SERVER_DOMAIN>/artifactory/api/npm/auth

之后,您可以使用任何 base64 编码的 username:ACCESS_TOKEN 替换/设置 _auth

对于作用域包,使用

curl -uadmin:<PASSWORD> http://<ARTIFACTORY_SERVER_DOMAIN>/artifactory/api/npm/npm-repo/auth/<SCOPE>

并使用任何用户和访问令牌设置 ..username.._password (base64)

【讨论】:

【参考方案5】:

Windows 用户:-

1/ 将 https://registry.npmjs.org 添加到 .npmrc 到顶部的用户配置文件中:

registry=https://registry.npmjs.org

或 2/ 在命令下方运行

npm config set registry  https://registry.npmjs.org

【讨论】:

用户询问如何处理他的私有 npm 存储库的身份验证问题。对于很多开发人员来说,切换到公共 npm 注册表不是一个选项,因为私有 IP 存储在私有 npm 存储库中。

以上是关于我应该如何使用人工访问令牌来访问 npm repo的主要内容,如果未能解决你的问题,请参考以下文章

你应该如何存储访问令牌?

如何在资源请求上重新生成刷新令牌和访问令牌?

具有 NPM azure-storage 的 Azure 文件不返回访问令牌

我应该使用哪个库来获取访问令牌?

GitHub OAuth2 令牌:如何限制访问以读取单个私有仓库

我应该如何使用 Google Cloud KMS 存储由另一个应用程序生成的访问令牌?