本站支持搜索的镜像仓库:Docker Hub、gcr.io、ghcr.io、quay.io、k8s.gcr.io、registry.gcr.io、elastic.co、mcr.microsoft.com

AzureAD-LDAP-wrapper是一个基于Node.js的LDAP服务器(构建于ldapjs之上),允许通过LDAP协议访问Azure Active Directory中的用户和组。用户认证在每次登录尝试时通过Microsoft Graph API执行。这使得其他应用程序能够连接到LDAP服务器并使用AzureAD登录凭据,使其成为缺乏AzureAD支持的旧应用程序或不需要管理本地AD控制器场景的可能解决方案。
AzureAD-LDAP-wrapper启动一个LDAP服务器,并从AAD Graph API获取用户和组信息。这些信息会被缓存并在本地合并。
当LDAP客户端尝试使用用户凭据进行绑定(bind)时,AzureAD-LDAP-wrapper通过与AAD Graph API通信来检查这些凭据。如果凭据有效,AAD Graph API会向AzureAD-LDAP-wrapper发送成功响应,然后AzureAD-LDAP-wrapper向用户的LDAP客户端发送成功绑定消息。此外,AzureAD-LDAP-wrapper会将用户的密码哈希保存在sambaNTPassword属性中,并将sambaPwdLastSet属性设置为“当前时间”。这允许用户从Windows电脑访问Samba共享(如NAS上的共享)。
AzureAD-LDAP-wrapper每30分钟定期从AAD Graph API获取用户和组信息,合并结果并在本地缓存。此过程会保留uid、gid、sambaNTPassword和sambaPwdLastSet等属性。
使用AzureAD-LDAP-wrapper需要:
一个Azure Active Directory (AD)租户,至少包含一个已注册用户。
在租户中注册的Azure AD应用程序,具有以下权限:
User.Read.All和Group.Read.All权限。User.Read权限。您可以按照安装指南中的说明设置应用程序。
运行AzureAD-LDAP-wrapper需要准备租户ID(Tenant ID)、应用ID(Application ID)和应用密钥(Application Secret)。这些值用于认证和授权应用程序访问Azure AD资源,可在Azure门户中找到。
创建Azure AD应用程序后,可以在本地计算机、服务器甚至Synology NAS上运行LDAP包装器。根据设置,您需要:
或
注意,包装器的某些功能可能需要额外的配置或依赖项,例如用于网络存储访问的NAS。
有多种运行LDAP包装器的方式。有关更多信息,请查阅文档以开始使用。
在Synology NAS上运行LDAP包装器的一种方法如下:
从Synology套件中心安装Docker。 !套件中心
在Docker中,转到“注册表”下载最新的容器镜像。 !下载最新镜像
在Docker中,转到“映像”启动新容器。使用“bridge”作为网络。 !启动映像 使用“bridge”作为网络。
为容器命名并启用自动重启。 !名称设置
在“高级设置”中配置环境变量。确保仔细检查Azure相关值,并至少定义一个绑定用户(binduser)。绑定用户(如root等超级用户)不需要存在于AzureAD中。将example.com替换为您的域名。以下是最小所需配置示例:
TZ: "Europe/Zurich" # 可选 AZURE_TENANTID: "0def2345-ff01-56789-1234-ab9d6dda1e1e" AZURE_APP_ID: "abc***-ab01-0000-1111-a1e1eab9d6dd" AZURE_APP_SECRET: "iamasecret~yep-reallyreallysecret" LDAP_DOMAIN: "example.com" LDAP_BASEDN: "dc=example,dc=com" LDAP_BINDUSER: "ldapsearch|*secretldapsearch123*||root|*secretroot*" LDAP_DEBUG: "false" # 设置为true以获取更多日志 GRAPH_IGNORE_MFA_ERRORS: "false" # 设置为true以绕过MFA DSM7: "true" # 如果运行DSM 6或更低版本,设置为false
!环境变量 所有环境变量的完整列表可在配置设置页面找到。
将本地端口389映射到容器端口***。如果收到“本地端口389与其他服务冲突”的错误,请确保未安装Synology Directory Service和Synology LDAP Server,它们也使用此端口。 !端口设置
在卷设置中,将本地文件夹(如docker/ldap)挂载到路径/app/.cache。如果跳过此步骤,数据将不会永久存储。 !文件夹挂载
点击“完成”启动容器。 !完成设置
要允许用户使用Azure凭据登录Synology NAS,需要将NAS连接到AzureAD-LDAP-wrapper。步骤如下:
进入控制面板 > 域/LDAP,点击“加入”。 !LDAP加入
输入NAS的IP地址(如127.0.0.1)作为服务器地址。 !服务器地址
输入先前定义的超级用户凭据(环境变量LDAP_BINDUSER)作为绑定DN(Bind DN)。如果用户未找到,尝试使用“uid=root”或完整名称“uid=root,cn=users,dc=domain,dc=tld”而非仅“root”。在Base DN中选择您的域。
!输入LDAP信息
如果看到关于本地组与同步组名称相同的警告,可以忽略并在“详情”中跳过警告。 !跳过警告
NAS现在应已成功连接到Azure AD LDAP包装器。 !NAS已连接
检查“LDAP用户”和“LDAP组”选项卡,确保所有条目已完全同步。为同步的用户和组分配所需权限。现在可以使用Azure AD凭据登录。 !检查用户
注意,在通过网络或Samba访问共享文件夹或文件之前,每个用户必须先登录DSM Web GUI或其他直接连接到LDAP服务器的工具。密码更改后也需要执行此步骤,因为Samba的密码哈希仅在成功登录后设置。
配置LDAP包装器可使用环境变量(因为其设计用于Docker)。所有可用变量的完整列表可在文档的配置设置页面找到。
如果遇到任何问题,首先检查Docker日志。许多错误会记录在日志中,有助于识别问题根源。此外,文档的故障排除页面提供了调试常见问题(包括Samba相关问题)的进一步指导。如果仍无法解决,请提交issue并附上相关日志文件以帮助诊断。
请注意,AzureAD-LDAP-wrapper涉及敏感用户信息的传输,因此确保安全使用至关重要。使用此包装器时存在一些潜在安全风险。有关这些风险及缓解措施的更多信息,请阅读文档的安全页面。
如果发现任何安全漏洞,请参考SECURITY.md中的说明进行报告。
欢迎对AzureAD-LDAP-wrapper做出贡献!如有任何建议、错误报告或拉取请求,请随时在项目的GitHub仓库上提交issue或拉取请求。
如果您发现此项目有帮助或为您节省了时间和精力,请考虑给予星标(star)和/或***。
您的支持有助于我维护和改进此项目。谢谢!
AzureAD-LDAP-wrapper采用MIT许可证授权。

免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录方式配置轩辕镜像加速服务,包含7个详细步骤
在 Linux 系统上配置轩辕镜像源,支持主流发行版
在 Docker Desktop 中配置轩辕镜像加速,适用于桌面系统
在 Docker Compose 中使用轩辕镜像加速,支持容器编排
在 k8s 中配置 containerd 使用轩辕镜像加速
在宝塔面板中配置轩辕镜像加速,提升服务器管理效率
在 Synology 群晖NAS系统中配置轩辕镜像加速
在飞牛fnOS系统中配置轩辕镜像加速
在极空间NAS中配置轩辕镜像加速
在爱快ikuai系统中配置轩辕镜像加速
在绿联NAS系统中配置轩辕镜像加速
在威联通NAS系统中配置轩辕镜像加速
在 Podman 中配置轩辕镜像加速,支持多系统
配置轩辕镜像加速9大主流镜像仓库,包含详细配置步骤
无需登录即可使用轩辕镜像加速服务,更加便捷高效
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429