如何配置ShinyProxy.yml的LDAP实现按组过滤应用访问权限?
解决ShinyProxy LDAP组权限过滤失效问题
1. 完善LDAP组关联配置
当前LDAP配置缺少用户与组的关联映射逻辑,导致ShinyProxy无法识别用户所属组,进而使权限规则失效。需补充以下关键配置项:
- 补全
group-search-base和user-search-base的完整DN,避免搜索范围错误 - 添加
group-role-attribute指定组的标识属性(通常为cn) - 添加
user-attribute指定用户对象中关联组的字段(如memberOf)
调整后的LDAP配置示例:
ldap: url: ldap://ourIP:389/dc=ourdomain,dc=com manager-dn: cn=admin,dc=ourdomain,dc=com manager-password: ++++++++ group-search-base: ou=Groups,dc=ourdomain,dc=com group-search-filter: (|(cn=admingroup)(cn=nonadmingroup)) user-search-base: ou=People,dc=ourdomain,dc=com user-search-filter: uid={0} group-role-attribute: cn user-attribute: memberOf
2. 配置全局管理员组
在配置文件根层级添加admin-groups,指定拥有管理员权限的LDAP组:
admin-groups: - admingroup
3. 为应用配置访问控制组
在每个apps条目下添加access-groups,限制仅指定组的用户可访问对应应用:
apps: - name: admin-only-app display-name: 管理员专属应用 docker-cmd: ["R", "-e", "shiny::runApp('/root/admin-app')"] docker-image: shiny-admin-image access-groups: - admingroup - name: regular-app display-name: 普通用户应用 docker-cmd: ["R", "-e", "shiny::runApp('/root/regular-app')"] docker-image: shiny-regular-image access-groups: - nonadmingroup - admingroup
4. 验证LDAP配置有效性
- 使用LDAP客户端测试组搜索过滤规则,确保能正确匹配目标组:
ldapsearch -x -H ldap://ourIP:389 -b ou=Groups,dc=ourdomain,dc=com "(|(cn=admingroup)(cn=nonadmingroup))" - 确认用户对象的
memberOf属性包含对应组的完整DN,例如cn=admingroup,ou=Groups,dc=ourdomain,dc=com
5. 重启ShinyProxy服务
修改配置后,重启ShinyProxy使新配置生效。
内容的提问来源于stack exchange,提问作者Gabrielupo
相关产品推荐
相关产品推荐

