有些组织将他们自己的包托管在需要身份验证才能访问的私有包注册表上。如果您是这类组织的员工或客户,则必须配置一个带有 npm 身份验证的范围注册表。要进行设置,请获取 npm 身份验证令牌,然后将该令牌添加到您的用户配置文件中。
创建和访问 npm 身份验证令牌的过程因注册表提供商而异。例如,JFrog 的 Artifactory 代码仓库管理器使用与 npm 不同的程序来生成身份验证令牌。这是典型程序的示例,但您需要遵循特定包注册表提供商为您的范围注册表推荐的过程。
要从 npm 获取身份验证令牌:
在计算机上本地安装 npm。
从终端输入以下命令来登录注册表:
$ npm login --registry <registry url>
定位并打开生成的 .npmrc 文件。
定位 _authToken 或 _auth 条目并复制其值(参阅下面的例子)。
根据注册表,令牌字符串可以是全局唯一标识符 GUID、令牌或专有格式的字符串。
这是一个包含 _authToken 属性的 .npmrc 文件示例:
registry=https://example.com:1234/mylocation/
//example.com:1234/mylocation/:_authToken=<AUTH TOKEN>
这是一个包含 _auth 属性的 .npmrc 文件示例:
registry=https://example.com:1234/mylocation
_auth=<AUTH TOKEN>
email=<EMAIL>
always-auth=true
使用 npmAuth 配置模式,将需要身份验证的每个范围注册表的令牌信息存储在 .upmconfig.toml 用户配置文件。将此信息保存到配置文件后,Package Manager 将针对向文件中的每个注册表发出的每个请求提供您的身份验证信息。
按照以下说明将您的身份验证信息添加到用户配置文件中:
定位 .upmconfig.toml 用户配置文件。如果文件不存在,创建一个空文本文件。
使用模式格式化您的身份验证信息,具体取决于您使用的是 Bearer(基于令牌)还是 Basic(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>" (Bearer) 或 _auth = "<BASE64 TOKEN>" (Basic)。 |
| 可选。与注册表中用户电子邮件匹配的用户电子邮件地址。 | |
| alwaysAuth | 可选。如果包元数据和 tarball 不在同一服务器上,则设置为 true。通常,您可以从生成的 .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,请进行安装。
获取 Azure DevOps 个人访问令牌 (PAT),以便在后续步骤中使用。如果需要重新生成 PAT,请登录 Azure DevOps (https://dev.azure.com),然后选择用户设置 (User settings) > 个人访问令牌 (Personal access tokens)。有关使用 PAT 的信息,请参阅 Microsoft 文章:使用个人访问令牌。
在命令行中,运行以下命令:
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();})"
在 Enter PAT 提示符下,输入 email:PAT:
email 替换为与 Azure DevOps 帐户关联的电子邮件以及在 .upmconfig.toml 文件中指定的电子邮件PAT 替换为在先前步骤中获得的 PAT命令将返回一个 Base64 加密的字符串。复制该字符串并将其指定为 .upmconfig.toml 文件中 _auth 键的值。
[npmAuth."http://localhost:8081/myrepository/mylocation"]
_auth = "c19kaW5pcm9AaG90bWFpbC4jb206d3FzdzVhemU9Q=="
email = "username@example.com"
alwaysAuth = true