如何在App Service部署的Verdaccio中集成AAD实现登录
Verdaccio 与 Active Directory 集成(App Service 容器部署场景)操作指南
1. 前置依赖校验(配置不生效最常见原因)
- 确认已安装AD认证插件:官方镜像默认不带
verdaccio-activedirectory插件,需自定义容器镜像,示例Dockerfile如下:
FROM verdaccio/verdaccio:latest USER root RUN npm install -g verdaccio-activedirectory USER verdaccio
- 确认App Service网络已打通AD域控:确保实例可访问AD的389(普通LDAP)或636(LDAPS)端口,无网络ACL、防火墙拦截。
2. 配置文件编写与挂载校验
- 编写正确的config.yaml配置,AD认证段需放在其他认证插件(如默认htpasswd)之前,示例配置:
auth: activedirectory: url: "ldap://你的AD域控IP:389" baseDN: "DC=你的域,DC=com" # 用于查询AD用户的服务账号 adminUserDN: "CN=服务账号,OU=Users,DC=你的域,DC=com" adminPassword: "服务账号密码" # 用户查询规则,默认按sAMAccountName匹配登录用户名 searchFilter: "(sAMAccountName={{username}})" searchAttributes: - "dn" - "sAMAccountName" - "mail" - "memberOf" # 可保留默认htpasswd作为备用登录方式,注释则完全禁用本地账号 htpasswd: file: ./htpasswd
- 确认App Service挂载路径正确:容器内默认配置路径为
/verdaccio/conf/config.yaml,挂载时需严格匹配该路径,同时确保文件权限为10001(verdaccio容器默认用户UID)可读。 - 验证配置是否生效:进入App Service SSH终端,执行
cat /verdaccio/conf/config.yaml,确认内容与你上传的配置一致,无格式错误。
3. 权限与日志排查
- 配置包权限:在config.yaml的
packages段配置AD用户/组的操作权限,示例:
packages: '@*/*': access: $authenticated # 填写AD中对应安全组名称,只有该组成员可发布包 publish: npm-admin-group unpublish: npm-admin-group '**': access: $authenticated publish: npm-admin-group
- 排查启动日志:在App Service日志流中查看容器启动日志,若出现以下报错可对应处理:
Cannot find module 'verdaccio-activedirectory':插件未正确安装,重新构建镜像LDAP connection error:AD地址/端口错误、网络不通、服务账号密码错误Configuration file not found:配置挂载路径错误、文件权限不足
4. LDAPS 特殊配置(若使用加密LDAP)
如果AD使用LDAPS协议,需将AD根证书挂载到容器/usr/local/share/ca-certificates目录,在启动命令中添加update-ca-certificates更新可信证书列表,避免连接时证书校验失败。
内容的提问来源于stack exchange,提问作者kiran
相关产品推荐
相关产品推荐

