跳到主要内容
版本号:Next

认证

认证部分设置与您使用的 Auth 插件息息相关。 包的访问限制也同时通过 包访问权限 控制。

客户端的认证流程由 npm 自行处理, 在你通过以下命令登陆后:

npm adduser --registry http://localhost:4873

npm 会将 Verdaccio 返回的 Token 保存在配置文件中,它存放于您的用户主目录下。 如需了解更多有关于 .npmrc 相关的内容,请查阅 官方文档

cat .npmrc
registry=http://localhost:5555/
//localhost:5555/:_authToken="secretVerdaccioToken"
//registry.npmjs.org/:_authToken=secretNpmjsToken

匿名发布

verdaccio 允许启用匿名发布。 要使用这个功能,必须设置正确的 程序包访问权限

例如:

'my-company-*':
access: $anonymous
publish: $anonymous
proxy: npmjs

Issue #212 所述,截至 npm@5.3.0 你仍然 无法在没有 Token 的情况下发布包

理解分组

$all$anonymous 的含义

Verdaccio 默认使用 htpasswd 插件。 这个插件没有实现 allow_access, allow_publishallow_unpublish 方法。 因此, Verdaccio 将会以下面的逻辑来处理这些情况:

  • 如果你没有登录(即匿名状态),$all$anonymous 是等价的。
  • 如果您已登录,$anonymous 将不会成为您组的一部分,并且 $all 将匹配任何已登录的用户。 一个新组 $authenticated 将添加到您的组列表中。

请注意:$all 将匹配所有用户,无论是否登录

之前的行为仅适用于默认身份验证插件。 如果您使用的是自定义插件并且该插件实现了 allow_accessallow_publishallow_unpublish,权限的解析取决于插件本身。 Verdaccio 只会设置默认组。

让我们来总结一下:

  • 已登录$all$authenticated + 由插件添加的组。
  • 注销(匿名)$all$anonymous

默认 htpasswd

为了简化设置,verdaccio 使用了一个基于htpasswd 的插件。 从版本 v3.0.x 开始,verdaccio-htpasswd 插件默认使用。

auth:
htpasswd:
file: ./htpasswd
# Maximum amount of users allowed to register, defaults to "+inf".
# You can set this to -1 to disable registration.
#max_users: 1000
# 您可以将其设置为 -1 以禁用注册。
# max_users: 1000
# 哈希算法,可选项包括:"bcrypt", "md5", "sha1", "crypt"。
algorithm: bcrypt # 默认情况下是crypt,但建议新安装的用户使用 bcrypt。
# "bcrypt" 的轮数,其他算法将被忽略
rounds: 10

默认算法是 crypt,被认为对生产环境不安全,建议新安装使用 bcrypt。 Verdaccio 6.x 之后的注意事项 默认值将会为 bcrypt

属性类型必须的范例支持版本描述
filestring./htpasswd全部存储了加密认证信息的 htpasswd 文件
max_usersnumber1000全部最大的用户数量
algorithmstringbcrypt/md5/sha1/crypt>=5.13.0设置密码算法
roundsnumber10>=5.13.0“bcrypt”的轮数,将被其他算法忽略

如果需要禁止新用户注册,可将配置修改为 max_users: -1.