[功能] LDAP: 组过滤器在 ActiveDirectory 中不起作用
**您的功能请求是否与问题有关?请描述。** 使用连接到 Windows Active Directory 域的 TinyAuth 作为 LDAP 服务器并不够好,因为组信息没有正确提取出来(AD 似乎不支持 objectclass=groupOfUniqueNames)。 **请描述您希望的解决方案** 让 LDAP 接口与 Windows Active Directory 兼容。理想情况下,LDAP 用户对象的 memberOf 属性可用于检查用户的组成员身份。 **请描述您已考虑过的其他方案** 由于组 LDAP 查询是硬编码的,似乎没有可行的解决方案。 **其他上下文** 我已经检查了 #590 和 #517,但该解决方案对 Windows Active Directory 来说不起作用。感谢您的出色工作和为此所做的努力!遗憾的是,当前的解决方案对我(以及使用 Active Directory 作为 LDAP 服务器的任何其他人)不起作用。看起来 Windows Active Directory 并不返回与 `(&(objectclass=groupOfUniqueNames)(uniquemember=%s))` LDAP 过滤器相关的任何内容,该过滤器用于 `GetUserGroups`(`ldap_service.go`)。看起来 `groupOfUniqueNames` 默认情况下在 Active Directory LDAP 架构中不可用(抱歉,我在这方面没有深入的知识,但如果我运行任何包含 `objectclass=groupOfUniqueNames` 的查询,则不会返回结果,而 `objectclass=group` 则会返回组)。 然而,我发现 LDAP 查询返回的用户对象具有 memberOf 属性,其中包含了给定用户的所有组成员身份。如果将此属性(除了 `{"dn", "mail"}`)添加到 `GetUserInfo`(`ldap_service.go`)中的 LDAP 查询中,则可以用于过滤组成员身份... 另一种选择是允许为每个容器/资源单独指定 LDAP 过滤器(通过标签),据我所知,目前对于搜索过滤器来说这是不可能的,只有对于组匹配(`tinyauth.apps.[app].ldap.groups`)才是如此。 谢谢,继续保持优秀的工作,TinyAuth 确实是一款不错的软件!
内容来源: tinyauthapp/tinyauth