Version: 6000.3
语言: 中文
在项目中使用作用域注册表
为组织托管作用域注册表

作用域注册表身份验证

一些包提供商和组织在需要身份验证才能访问的专用包注册表上托管包。

如果您是尝试访问需要身份验证的范围注册表的使用者或组织成员,则必须使用 npm 身份验证配置包管理器用户配置文件。

要设置此访问权限,请执行以下作:

  1. 获取 npm 身份验证令牌
  2. 该令牌添加到用户配置文件中

1) 获取 npm 身份验证令牌

每个注册表提供程序创建和访问 npm 身份验证令牌的过程都不同。例如,JFrog 的 Artifactory 存储库管理器使用不同的过程从 npm 生成身份验证令牌。这是典型过程的示例,但需要遵循特定包注册表提供程序为作用域注册表建议的过程。

要从 npm 获取身份验证令牌:

  1. 在您的计算机上本地安装 npm

  2. 在终端中,输入以下命令登录到注册表,将<registry url>替换为注册表服务器的 URL:

    $ npm login --registry <registry url>
    
  3. 找到并打开生成的 .npmrc 文件。

  4. 找到_authToken_auth输入并复制其值(请参阅下面的示例)。

    根据注册表,令牌字符串可以是全局唯一标识符 (GUID)、令牌或专有格式的字符串。

.npmrc 文件示例

这是一个示例.npmrc文件包含_authToken属性:

registry=https://example.com:1234/mylocation/
//example.com:1234/mylocation/:_authToken=<AUTH TOKEN>

这是一个示例.npmrc文件包含_auth属性:

registry=https://example.com:1234/mylocation
_auth=<AUTH TOKEN>
email=<EMAIL>
always-auth=true

2)配置认证信息

将每个需要身份验证的作用域注册表的令牌信息存储在.upmconfig.toml 用户配置文件使用npmAuth配置模式。 将此信息保存到配置文件后,包管理器将提供对文件中每个注册表发出的每个请求的身份验证信息。

按照以下说明将身份验证信息添加到用户配置文件中:

  1. 找到.upmconfig.toml 用户配置文件。如果该文件不存在,请创建一个空文本文件。

  2. 使用架构格式化身份验证信息,具体取决于您使用的是持有者(基于令牌)还是基本(Base64 加密)身份验证机制。

[npmAuth."<REGISTRY URL>"]
<TOKEN-PROPERTY> = "<TOKEN-VALUE>"
email = "<EMAIL>"
alwaysAuth = <BOOLEAN>

下表中的信息说明了如何指定配置文件值:

进入 描述
[npmAuth."<REGISTRY-URL>"] 必填。注册表的 URL。例如[npmAuth."https://example.com:8081/mylocation"].
<TOKEN-PROPERTY> = "<TOKEN-VALUE>" 必填。从 npm 注册表生成的身份验证令牌。这可以是 GUID、令牌或专有格式的字符串。例如,这可以是token = "<AUTH TOKEN>"(不记名)或_auth = "<BASE64 TOKEN>"(基本)。
电子邮件 自选。与注册表上用户的电子邮件匹配的用户的电子邮件地址。
始终授权 自选。设置为true如果包元数据和 tarball 不在同一服务器上。通常,您可以从生成的 .npmrc 文件中复制该值。

使用持有者身份验证的示例

[npmAuth."http://localhost:8081/myrepository/mylocation"]
token = "NpmToken.2348c7ea-6f86-3dbe-86b6-f257e86569a8"
alwaysAuth = true

[npmAuth."http://localhost:4873"]
token = "eaJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJyZWFsX2dyb3VwcyI6WyJwYXNjYWxsIl0sIm5hbWUiOiJwYXNjYWxsIiwiZ3JvdXBzIjpbIn"

[npmAuth."https://api.bintray.example/npm/mycompany/myregistry"]
token = "aGFzY2FsbDo4ZWIwNTM5NzBjNTI3OTIwYjQ4MDVkYzY2YWEzNmQxOTkyNDYzZjky"
email = "username@example.com"
alwaysAuth = true

配置基本认证信息

这些步骤使用 Azure DevOps 作为示例,但对于使用个人访问令牌 (PAT) 的任何平台,该过程都类似。

在开始之前,请安装Node.js如果尚未安装。

  1. 获取 Azure DevOps 个人访问令牌 (PAT),并为后续步骤做好准备。如果需要重新生成 PAT,请登录到 Azure DevOps (https://dev.azure.com) 并转到 “用户设置 ”> “个人访问令牌”。有关使用 PAT 的信息,请参阅 Microsoft 文章使用个人访问令牌

  2. 在命令行中,运行以下命令:

    node -e "require('readline').createInterface({input:process.stdin,output:process.stdout,historySize:0}).question('Enter PAT> ',p => {b64=Buffer.from(p.trim()).toString('base64');console.log(b64);process.exit();})"
    
  3. Enter PATprompt,键入email:PAT取代:

    • email替换为与 Azure DevOps 帐户关联的电子邮件,以及.upmconfig.toml文件
    • PAT使用前面步骤中的 PAT
  4. 该命令返回一个 Base64 加密的字符串。复制该字符串并将其赋值为_auth键入.upmconfig.toml文件。

使用基本身份验证的示例

[npmAuth."http://localhost:8081/myrepository/mylocation"]
_auth = "c19kaW5pcm9AaG90bWFpbC4jb206d3FzdzVhemU9Q=="
email = "username@example.com"
alwaysAuth = true

其他资源

在项目中使用作用域注册表
为组织托管作用域注册表