Multi-value attributes (mail/groups) not handled correctly if using environment

未关闭
#700 0 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

维护者通常 1 天内回复

还没有人认领这个 Issue。

评估

难度
3/5
预计耗时
1-2 天
新手友好度
45/100
Issue 类型
缺陷
描述清晰度
基本清楚
活跃度
停滞
技术栈
apache, php

调研方向

从 apps/user_saml/lib/UserBackend.php 中的 getAttribute* 函数开始,跟踪映射的 mail 和 groups 属性的环境变量路径。确认直接 IdP 属性的处理方式,然后使环境变量路径一致地拆分以分号分隔的值,并验证多值属性是否被分别存储且不会破坏现有映射。

由索引模型根据 Issue 内容生成。

描述

Steps to reproduce
  1. Configure user_saml with 'Use Environment variable'
  2. Configure an attribute mapping for mail and groups
  3. Log into your instance. If you have multiple groups and/or mail addresses, you can see in your personal information that they are not split into multiple values but treated as single values. This may even cause a crash if you are in many groups, because the database column is limited to 64 chars.
Expected behaviour

Multi-value attributes (delimited by semicolons) should be split. It works if not using the environment mechanism but connecting directly to an idp, but I want to integrate nextcloud into a federation, which requires the use of apache/mod_shib/shibd and environment variables.

Actual behaviour

Multi-value attributes are not split but treated as a single value, causing various problems.

I tracked that down to the behaviour of the getAttribute* functions in apps/user_saml/lib/UserBackend.php and I may be able to develop a workaround or clean fix, but of course this problem should be fixed in the official sources.

This bug makes the integration of Nextcloud into a Shibboleth-based federation impossible in many situations.

Server configuration

Operating system:

Ubuntu 22.04

Web server:

Apache 2.4.52

Database:

Postgresql 14

PHP version:

8.1

Nextcloud version: (see Nextcloud admin page)

25.0.3

Where did you install Nextcloud from:

?

List of activated apps:

  • activity: 2.17.0
  • admin_audit: 1.15.0
  • bruteforcesettings: 2.5.0
  • calendar: 4.2.3
  • circles: 25.0.0
  • cloud_federation_api: 1.8.0
  • comments: 1.15.0
  • contacts: 5.1.0
  • contactsinteraction: 1.6.0
  • dav: 1.24.0
  • deck: 1.8.3
  • federatedfilesharing: 1.15.0
  • federation: 1.15.0
  • files: 1.20.1
  • files_pdfviewer: 2.6.0
  • files_rightclick: 1.4.0
  • files_sharing: 1.17.0
  • files_trashbin: 1.15.0
  • files_versions: 1.18.0
  • issuetemplate: 0.7.0
  • logreader: 2.10.0
  • lookup_server_connector: 1.13.0
  • notes: 4.6.0
  • notifications: 2.13.1
  • oauth2: 1.13.0
  • password_policy: 1.15.0
  • photos: 2.0.1
  • privacy: 1.9.0
  • provisioning_api: 1.15.0
  • related_resources: 1.0.3
  • serverinfo: 1.15.0
  • settings: 1.7.0
  • sharebymail: 1.15.0
  • systemtags: 1.15.0
  • tasks: 0.14.5
  • text: 3.6.0
  • theming: 2.0.1
  • theming_customcss: 1.12.0
  • twofactor_backupcodes: 1.14.0
  • twofactor_totp: 7.0.0
  • updatenotification: 1.15.0
  • user_saml: 5.1.2
  • user_status: 1.5.0
  • viewer: 1.9.0
  • weather_status: 1.5.0
  • workflowengine: 2.7.0

Nextcloud configuration:

{
"system": {
"debug": true,
"instanceid": "REMOVED SENSITIVE VALUE",
"passwordsalt": "REMOVED SENSITIVE VALUE",
"secret": "REMOVED SENSITIVE VALUE",
"trusted_domains": [
"nc.uni-bremen.de",
"nextcloud.zfn.uni-bremen.de",
"nextcloud.uni-bremen.de",
"nextcloud.vm.uni-bremen.de"
],
"datadirectory": "REMOVED SENSITIVE VALUE",
"dbtype": "pgsql",
"version": "25.0.3.2",
"overwrite.cli.url": "https://nc.uni-bremen.de",
"dbname": "REMOVED SENSITIVE VALUE",
"dbhost": "REMOVED SENSITIVE VALUE",
"dbport": "",
"dbtableprefix": "oc_",
"mysql.utf8mb4": true,
"dbuser": "REMOVED SENSITIVE VALUE",
"dbpassword": "REMOVED SENSITIVE VALUE",
"installed": true,
"memcache.local": "\OC\Memcache\APCu",
"default_phone_region": "DE",
"filelocking.enabled": true,
"memcache.locking": "\OC\Memcache\Redis",
"memcache.distributed": "\OC\Memcache\Redis",
"redis": {
"host": "REMOVED SENSITIVE VALUE",
"port": 6379,
"timeout": 0,
"password": "REMOVED SENSITIVE VALUE"
},
"mail_smtpmode": "smtp",
"mail_smtpsecure": "tls",
"mail_sendmailmode": "smtp",
"mail_from_address": "REMOVED SENSITIVE VALUE",
"mail_domain": "REMOVED SENSITIVE VALUE",
"mail_smtphost": "REMOVED SENSITIVE VALUE",
"default_language": "de",
"default_locale": "de_DE",
"lookup_server": "",
"allow_user_to_change_display_name": false,
"enable_previews": true,
"maintenance": false,
"theme": "",
"loglevel": 1,
"trashbin_retention_obligation": "auto,30",
"bulkupload.enabled": false,
"app_install_overwrite": [
"issuetemplate"
]
}
}

Client configuration

Browser:

Firefox, Chrome, Chromium, ...

Operating system:

Ubuntu

主要语言
PHP
星标
106
派生
84
平均合并
1 天 11 小时
30 天内合并 PR
14

环境准备

  • 没有 Dockerfile 或 Docker Compose 文件
  • 没有 Pull Request 模板
  • 阅读贡献指南

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

nextcloud/user_saml 的其他 Issue

查看 nextcloud/user_saml 的全部 Issue

相似的 Issue

更多 PHP Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。