mirror of
https://github.com/BookStackApp/BookStack.git
synced 2026-02-05 00:29:48 +03:00
SAML Group Sync - Support group listings within single attribute #2050
Open
opened 2026-02-05 02:43:53 +03:00 by OVERLORD
·
9 comments
No Branch/Tag Specified
development
l10n_development
further_theme_development
release
llm_only
vectors
v25-11
docker_env
drawio_rendering
user_permissions
ldap_host_failover
svg_image
prosemirror
captcha_example
fix/video-export
v25.12.3
v25.12.2
v25.12.1
v25.12
v25.11.6
v25.11.5
v25.11.4
v24.11.4
v25.11.3
v25.11.2
v25.11.1
v25.11
v25.07.3
v25.07.2
v25.07.1
v25.07
v25.05.2
v25.05.1
v25.05
v25.02.5
v25.02.4
v25.02.3
v25.02.2
v25.02.1
v25.02
v24.12.1
v24.12
v24.10.3
v24.10.2
v24.10.1
v24.10
v24.05.4
v24.05.3
v24.05.2
v24.05.1
v24.05
v24.02.3
v24.02.2
v24.02.1
v24.02
v23.12.3
v23.12.2
v23.12.1
v23.12
v23.10.4
v23.10.3
v23.10.2
v23.10.1
v23.10
v23.08.3
v23.08.2
v23.08.1
v23.08
v23.06.2
v23.06.1
v23.06
v23.05.2
v23.05.1
v23.05
v23.02.3
v23.02.2
v23.02.1
v23.02
v23.01.1
v23.01
v22.11.1
v22.11
v22.10.2
v22.10.1
v22.10
v22.09.1
v22.09
v22.07.3
v22.07.2
v22.07.1
v22.07
v22.06.2
v22.06.1
v22.06
v22.04.2
v22.04.1
v22.04
v22.03.1
v22.03
v22.02.3
v22.02.2
v22.02.1
v22.02
v21.12.5
v21.12.4
v21.12.3
v21.12.2
v21.12.1
v21.12
v21.11.3
v21.11.2
v21.11.1
v21.11
v21.10.3
v21.10.2
v21.10.1
v21.10
v21.08.6
v21.08.5
v21.08.4
v21.08.3
v21.08.2
v21.08.1
v21.08
v21.05.4
v21.05.3
v21.05.2
v21.05.1
v21.05
v21.04.6
v21.04.5
v21.04.4
v21.04.3
v21.04.2
v21.04.1
v21.04
v0.31.8
v0.31.7
v0.31.6
v0.31.5
v0.31.4
v0.31.3
v0.31.2
v0.31.1
v0.31.0
v0.30.7
v0.30.6
v0.30.5
v0.30.4
v0.30.3
v0.30.2
v0.30.1
v0.30.0
v0.29.3
v0.29.2
v0.29.1
v0.29.0
v0.28.3
v0.28.2
v0.28.1
v0.28.0
v0.27.5
v0.27.4
v0.27.3
v0.27.2
v0.27.1
v0.27
v0.26.4
v0.26.3
v0.26.2
v0.26.1
v0.26.0
v0.25.5
v0.25.4
v0.25.3
v0.25.2
v0.25.1
v0.25.0
v0.24.3
v0.24.2
v0.24.1
v0.24.0
v0.23.2
v0.23.1
v0.23.0
v0.22.0
v0.21.0
v0.20.3
v0.20.2
v0.20.1
v0.20.0
v0.19.0
v0.18.5
v0.18.4
v0.18.3
v0.18.2
v0.18.1
v0.18.0
v0.17.4
v0.17.3
v0.17.2
v0.17.1
v0.17.0
v0.16.3
v0.16.2
v0.16.1
v0.16.0
v0.15.3
v0.15.2
v0.15.1
v0.15.0
v0.14.3
v0.14.2
v0.14.1
v0.14.0
v0.13.1
v0.13.0
v0.12.2
v0.12.1
v0.12.0
v0.11.2
v0.11.1
v0.11.0
v0.10.0
v0.9.3
v0.9.2
v0.9.1
v0.9.0
v0.8.2
v0.8.1
v0.8.0
v0.7.6
v0.7.5
v0.7.4
v0.7.3
0.7.2
v.0.7.1
v0.7.0
v0.6.3
v0.6.2
v0.6.1
v0.6.0
v0.5.0
Labels
Clear labels
🎨 Design
📖 Docs Update
🐛 Bug
🐛 Bug
:cat2:🐈 Possible duplicate
💿 Database
☕ Open to discussion
💻 Front-End
🐕 Support
🚪 Authentication
🌍 Translations
🔌 API Task
🏭 Back-End
⛲ Upstream
🔨 Feature Request
🛠️ Enhancement
🛠️ Enhancement
🛠️ Enhancement
❤️ Happy feedback
🔒 Security
🔍 Pending Validation
💆 UX
📝 WYSIWYG Editor
🌔 Out of scope
🔩 API Request
:octocat: Admin/Meta
🖌️ View Customization
❓ Question
🚀 Priority
🛡️ Blocked
🚚 Export System
♿ A11y
🔧 Maintenance
> Markdown Editor
Milestone
No items
No Milestone
Projects
Clear projects
No project
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: starred/BookStack#2050
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @mcbmoreno on GitHub (Jan 19, 2021).
Hello,
Running Bookstack version 0.30.2
I just successfully setup SAML via our GSuite domain but Bookstack isn't recognizing any GSuite groups so users do not get a role applied to their account when logging in.
Here are my SAML .env values:
AUTH_METHOD=saml2
SAML2_NAME=Google
SAML2_EMAIL_ATTRIBUTE=email
SAML2_EXTERNAL_ID_ATTRIBUTE=uid
SAML2_DISPLAY_NAME_ATTRIBUTES="firstName|lastName"
SAML2_IDP_ENTITYID="https://accounts.google.com/o/saml2?idpid=C"
SAML2_AUTOLOAD_METADATA=false
SAML2_IDP_SSO="https://accounts.google.com/o/saml2/idp?idpid=C"
SAML2_IDP_SLO="https://accounts.google.com/logout"
SAML2_IDP_x509="-----BEGIN CERTIFICATE----- -----END CERTIFICATE-----
SAML2_USER_TO_GROUPS=true
SAML2_GROUP_ATTRIBUTE=groups
SAML2_REMOVE_FROM_GROUPS=true
Any ideas on how to get Bookstack to recognize GSuite groups?
Thanks.
@ssddanbrown commented on GitHub (Jan 20, 2021):
Hi @mcbmoreno,
Have you setup matching groups in BookStack?
You can try setting
SAML2_DUMP_USER_DETAILS=truein your.envfile and see if you're getting the expected group values on the expected attribute from google.@mcbmoreno commented on GitHub (Jan 20, 2021):
This is the output when SAML2_DUMP_USER_DETAILS=true was added. Looks like it isn't passing groups?
{"id_from_idp":"jsmith@domain.com","attrs_from_idp":[],"attrs_after_parsing":{"external_id":"jsmith@domain.com","name":"jsmith@domain.com","email":"jsmith@domain.com,"saml_id":"jsmith@domain.com"}}
@ssddanbrown commented on GitHub (Jan 20, 2021):
@mcbmoreno Looks like it.
I have no idea what configuration is available in Gsuite for this. This is probably the closest similar case I could quickly find:
https://www.dynatrace.com/support/help/how-to-use-dynatrace/user-management-and-sso/manage-users-and-groups-with-saml/saml-gsuite/
@mcbmoreno commented on GitHub (Jan 21, 2021):
Went a different route. In the Google Admin console when setting up the SAML connection you can choose some additional attributes to send. Groups was not one of them but Department is.
Set SAML2_GROUP_ATTRIBUTE="department" in .env and if the value in the department matches the same name as a role in Bookstack everything applies fine.
Question though, say someone is a member of 2 departments so the department is passed via SAML as "IT,Staff". Is there a format that value can be password that Bookstack will identify it as two separate values and place the user in both the IT role and Staff role? I tried so far passing the value as
IT, Staff
and
IT; Staff
but neither worked.
@ssddanbrown commented on GitHub (Jan 22, 2021):
BookStack does support multiple SAML2 groups but it expects them as an array of group names; I'm not sure on the exact raw format but I'd guess you could not emulate it like so.
You can set multiple comma separated values in the "External Authentication ID" field of the role in BookStack. Therefore you could always do something hacky like have combined values listed in there, For example, for an "Staff" bookstack role:
Of course not great to manage but a potential solution if there's only a few groups at play.
@mcbmoreno commented on GitHub (Jan 22, 2021):
I think that will work but it looks like the External Authentication ID field in the Settings > Roles > select role, is not available when LDAP is not enabled?
@ssddanbrown commented on GitHub (Jan 22, 2021):
@mcbmoreno Should also show when SAML auth is active.
@bendem commented on GitHub (Jan 27, 2021):
Hello, we have the same problem using lemonldap, the groups field parsed by bookstack shows an array with a single string of groups separated by
;. Is there a specific separator to use or a config available to tell bookstack to split that string?@ssddanbrown commented on GitHub (Jan 28, 2021):
@bendem No way right now