1、关于访问令牌
注意:您必须使用npm版本5.5.1或更高版本才能使用访问令牌。
在使用API或npm命令行界面(CLI)时,访问令牌是使用用户名和密码向npm进行身份验证的替代方案。 访问令牌是一个十六进制字符串,您可以使用它来进行身份验证,它赋予您安装和/或发布模块的权利。
有两种类型的访问令牌可用:
- 传统令牌
- 粒度访问令牌
您可以创建访问令牌,以给予其他工具(如持续集成测试环境)能够访问您的npm包。例如,GitHub Actions提供了存储密钥的能力,例如访问令牌,然后您可以使用这些秘密来进行身份验证。 当您的工作流运行时,它将能够像您一样完成npm任务,包括安装您可以访问的私有包。
您可以使用Web或CLI中的令牌,以最简单的方式使用。你在每个环境中所做的事情都会反映在另一个环境中。
令牌命令允许您:
- 查看令牌以更轻松地跟踪和管理
- 创建新的传统令牌
- 根据IP地址范围(CIDR)限制访问
- 删除/撤销令牌
1.1 关于传统令牌
传统令牌是以与创建它们的用户相同的权限创建的。运行npm login
时,npm CLI会自动生成并使用发布令牌。
有三种不同类型的遗留令牌:
- 只读:您可以使用这些令牌从注册表下载包。这些令牌最适合安装软件包的自动化和工作流。为了提高安全性,我们建议使用粒度访问令牌。
- 自动化:您可以使用这些令牌下载软件包并安装新软件包。这些令牌最适合发布新包的自动化工作流。自动化令牌不适用于在npm上执行操作,并且适用于CI/CD工作流。为了提高安全性,我们建议使用粒度访问令牌。
- 发布:您可以使用这些令牌下载软件包、安装软件包以及更新用户和软件包设置。我们建议将它们用于交互式工作流,如CLI。如果在您的帐户上启用了2FA,发布令牌将需要2FA才能在npm上执行敏感操作。
1.2 关于粒度访问令牌
细粒度访问令牌允许您根据要使用令牌的用途限制对令牌的访问。使用粒度访问令牌,您可以:
- 限制令牌可以访问哪些包和范围
- 向特定组织授予令牌访问权限
- 设置令牌到期日期
- 基于IP地址范围限制令牌访问
- 选择只读或读写访问
您可以在npm帐户上创建多达1000个粒度访问令牌。您可以设置令牌的有效期,至少在未来一天内。每个令牌最多可以访问50个组织,最多可以访问50个包、50个作用域或50个包和作用域的组合。访问令牌与用户的权限绑定;因此,它在任何时间点都不能具有比用户更多的许可。如果用户从包或组织撤销了其访问权限,它们的粒度访问令牌也将使其访问从那些包或org中被撤销。
当您给予对组织的令牌访问权限时,令牌只能用于管理组织设置以及与该组织关联的团队或用户。它不给予令牌发布组织管理的包的权利。
2、创建和查看访问令牌
您可以从网站和命令行(CLI)界面创建和查看访问令牌。
2.1 创建访问令牌
在网站上创建传统令牌
注意:为了提高安全性,我们建议使用粒度访问令牌,而不是旧版只读令牌或旧版自动化令牌。
1、在页面的右上角,单击您的个人资料图片,然后单击访问令牌。
2、可以看到最近的访问令牌列表,上面2个按钮,可以用来创建新的令牌,以及删除列表中的令牌,如下所示:
令牌有2中,颗粒度访问令牌,以及经典令牌
3、选择一种类型进行令牌的创建,这里先选择经典令牌的创建,需要输入确认密码才能继续。
4 、输入确认密码之后,弹出如下页面。
name: 需输入访问令牌的名字。
访问令牌的类型:
- 只读:只读令牌只能用于从注册表下载包。 它将有权限读取您有权访问的任何私有包。 对于正在安装软件包但不发布新软件包的自动化和工作流,建议使用此方法。
- 自动化:自动化令牌可以下载包并发布新包,但如果您在帐户上配置了双因素身份验证(2FA),则不会强制执行。 您可以在持续集成工作流和其他自动化系统中使用自动化令牌来发布包,即使您无法输入一次性密码。
- 发布:发布令牌可以代表您执行任何操作,包括下载包、发布包以及更改用户设置或包设置。 如果您的帐户上配置了双因素身份验证,则在使用发布令牌时,您将需要输入一次性密码。 对于CLI等交互式工作流,建议使用此方法。
5、然后单击左下角的“生成令牌”按钮,生成一个新的访问令牌。
6、令牌生成之后,回访令牌列表页面,在列表上面可以看到新生成的令牌。
请确保复制您的令牌。它在这里只显示一次。
在网站上创建粒度访问令牌
1、在页面的右上角,单击您的个人资料图片,然后单击访问令牌。
2、可以看到最近的访问令牌列表,上面2个按钮,可以用来创建新的令牌,以及删除列表中的令牌,如下所示:
令牌有2中,颗粒度访问令牌,以及经典令牌
3、选择一种类型进行令牌的创建,这里先选择粒度访问令牌的创建,需要输入确认密码才能继续。
4 、输入确认密码之后,弹出如下页面。
(1)需要输入令牌的名字(提供一个唯一的名字)
(2)在描述输入框中,输入对该令牌的描述信息
(3)到期时间,选择令牌到期的时间(默认选择3天)。也可以选择其他的,也已选自定义。
(4)在“允许的IP范围”字段中,输入要限制访问令牌的IP地址范围。必须使用CIDR表示法输入IP地址范围。要添加多个允许的IP范围,请单击“添加IP范围”,然后在新文本字段中输入IP范围。
(5)包以及作用域权限(默认禁止访问)
包括3种权限:
- 禁止访问
- 只读
- 可读写
可以选针对哪些包,包括:
- 当前包以及以后所有的包
- 可以选择的包,至少选择1个,最大50个
(5)组织的访问权限(默认禁止访问)
包括3种权限:
- 禁止访问
- 只读
- 可读写
摘要信息(根据以上选择生成对应的摘要信息):
根据摘要信息确认无误后,然后单击左下角“生成令牌”,生成粒度访问令牌。
5、令牌生成之后,回访令牌列表页面,在列表上面可以看到新生成的令牌。
使用CLI创建令牌
您可以使用CLI创建具有只读权限或读取和发布权限的令牌。
注意:您无法从CLI创建旧版自动化令牌或粒度访问令牌。您必须使用网站来生成这些类型的令牌。
- 只读:只允许安装和分发的令牌,但不允许发布或与您的帐户相关的其他权限。
- 发布:新令牌的默认设置,以及最允许的令牌类型。发布令牌允许安装、分发、修改、发布以及您对帐户拥有的所有权限。
此外,您可以使用CIDR表示法指定令牌仅对特定的IPv4地址范围有效。 令牌仅在从指定的IP地址使用时有效。
1、要创建新令牌,请在命令行上运行:
- npm token create 用于创建只读和发布令牌
- npm token create --read-only 用于创建只读令牌
- npm token create --cidr=[list] 用于CIDR限制的读取和发布令牌。例如
npm token create --cidr=192.0.2.0/24
npm token create --read-only --cidr=[list]
用于CIDR限制的只读令牌
2、出现提示时,输入密码。
3、如果已启用双因素身份验证
,则在出现提示时输入一次性密码。
4、从命令输出中的标记字段复制令牌。
CIDR限制令牌错误
如果您输入的CIDR字符串无效或格式不正确,您将收到类似于下面的错误:
npm ERR! CIDR whitelist contains invalid CIDR entry: X.X.X.X./YY,Z.Z.. . .
查看访问令牌
注意:不会显示完整的令牌,只会显示前四个字符和最后四个字符。您只能在创建后立即查看完整令牌。
在网站上查看令牌
在页面的右上角,单击您的个人资料图片,然后单击访问令牌。
在CLI上查看令牌
要查看与您的帐户关联的所有令牌,请在命令行上运行以下命令:
npm token list
令牌属性
- id:使用令牌ID来引用命令中的令牌。
- token:第一个数字是实际token。
- create:创建令牌的日期。
- readonly:如果是,则表示只读标记。如果为否,则指示同时具有读取和发布权限的令牌。
- CIDR白名单:按IP地址限制令牌使用。