认证
认证部分设置与您使用的 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_publish
和 allow_unpublish
方法。 因此, Verdaccio 将会以下面的逻辑来处理这些情况:
- 如果你没有登录(即匿名状态),
$all
和$anonymous
是等价的。 - 如果您已登录,
$anonymous
将不会成为您组的一部分,并且$all
将匹配任何已登录的用户。 一个新组$authenticated
将添加到您的组列表中。
请注意:$all
将匹配所有用户,无论是否登录。
之前的行为仅适用于默认身份验证插件。 如果您使用的是自定义插件并且该插件实现了 allow_access
、allow_publish
或allow_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
。
属性 | 类型 | 必须的 | 范例 | 支持版本 | 描述 |
---|---|---|---|---|---|
file | string | 是 | ./htpasswd | 全部 | 存储了加密认证信息的 htpasswd 文件 |
max_users | number | 否 | 1000 | 全部 | 最大的用户数量 |
algorithm | string | 否 | bcrypt/md5/sha1/crypt | >=5.13.0 | 设置密码算法 |
rounds | number | 否 | 10 | >=5.13.0 | “bcrypt”的轮数,将被其他算法忽略 |
如果需要禁止新用户注册,可将配置修改为
max_users: -1
.