mirror of
https://github.com/juanfont/headscale.git
synced 2026-01-11 20:00:28 +01:00
[OIDC] Plans about Known limitation #408
Closed
opened 2025-12-29 01:28:26 +01:00 by adam
·
12 comments
No Branch/Tag Specified
main
update_flake_lock_action
gh-pages
kradalby/release-v0.27.2
dependabot/go_modules/golang.org/x/crypto-0.45.0
dependabot/go_modules/github.com/opencontainers/runc-1.3.3
copilot/investigate-headscale-issue-2788
copilot/investigate-visibility-issue-2788
copilot/investigate-issue-2833
copilot/debug-issue-2846
copilot/fix-issue-2847
dependabot/go_modules/github.com/go-viper/mapstructure/v2-2.4.0
dependabot/go_modules/github.com/docker/docker-28.3.3incompatible
kradalby/cli-experiement3
doc/0.26.1
doc/0.25.1
doc/0.25.0
doc/0.24.3
doc/0.24.2
doc/0.24.1
doc/0.24.0
kradalby/build-docker-on-pr
topic/docu-versioning
topic/docker-kos
juanfont/fix-crash-node-id
juanfont/better-disclaimer
update-contributors
topic/prettier
revert-1893-add-test-stage-to-docs
add-test-stage-to-docs
remove-node-check-interval
fix-empty-prefix
fix-ephemeral-reusable
bug_report-debuginfo
autogroups
logs-to-stderr
revert-1414-topic/fix_unix_socket
rename-machine-node
port-embedded-derp-tests-v2
port-derp-tests
duplicate-word-linter
update-tailscale-1.36
warn-against-apache
ko-fi-link
more-acl-tests
fix-typo-standalone
parallel-nolint
tparallel-fix
rerouting
ssh-changelog-docs
oidc-cleanup
web-auth-flow-tests
kradalby-gh-runner
fix-proto-lint
remove-funding-links
go-1.19
enable-1.30-in-tests
0.16.x
cosmetic-changes-integration
tmp-fix-integration-docker
fix-integration-docker
configurable-update-interval
show-nodes-online
hs2021
acl-syntax-fixes
ts2021-implementation
fix-spurious-updates
unstable-integration-tests
mandatory-stun
embedded-derp
prtemplate-fix
v0.28.0-beta.1
v0.27.2-rc.1
v0.27.1
v0.27.0
v0.27.0-beta.2
v0.27.0-beta.1
v0.26.1
v0.26.0
v0.26.0-beta.2
v0.26.0-beta.1
v0.25.1
v0.25.0
v0.25.0-beta.2
v0.24.3
v0.25.0-beta.1
v0.24.2
v0.24.1
v0.24.0
v0.24.0-beta.2
v0.24.0-beta.1
v0.23.0
v0.23.0-rc.1
v0.23.0-beta.5
v0.23.0-beta.4
v0.23.0-beta3
v0.23.0-beta2
v0.23.0-beta1
v0.23.0-alpha12
v0.23.0-alpha11
v0.23.0-alpha10
v0.23.0-alpha9
v0.23.0-alpha8
v0.23.0-alpha7
v0.23.0-alpha6
v0.23.0-alpha5
v0.23.0-alpha4
v0.23.0-alpha4-docker-ko-test9
v0.23.0-alpha4-docker-ko-test8
v0.23.0-alpha4-docker-ko-test7
v0.23.0-alpha4-docker-ko-test6
v0.23.0-alpha4-docker-ko-test5
v0.23.0-alpha-docker-release-test-debug2
v0.23.0-alpha-docker-release-test-debug
v0.23.0-alpha4-docker-ko-test4
v0.23.0-alpha4-docker-ko-test3
v0.23.0-alpha4-docker-ko-test2
v0.23.0-alpha4-docker-ko-test
v0.23.0-alpha3
v0.23.0-alpha2
v0.23.0-alpha1
v0.22.3
v0.22.2
v0.23.0-alpha-docker-release-test
v0.22.1
v0.22.0
v0.22.0-alpha3
v0.22.0-alpha2
v0.22.0-alpha1
v0.22.0-nfpmtest
v0.21.0
v0.20.0
v0.19.0
v0.19.0-beta2
v0.19.0-beta1
v0.18.0
v0.18.0-beta4
v0.18.0-beta3
v0.18.0-beta2
v0.18.0-beta1
v0.17.1
v0.17.0
v0.17.0-beta5
v0.17.0-beta4
v0.17.0-beta3
v0.17.0-beta2
v0.17.0-beta1
v0.17.0-alpha4
v0.17.0-alpha3
v0.17.0-alpha2
v0.17.0-alpha1
v0.16.4
v0.16.3
v0.16.2
v0.16.1
v0.16.0
v0.16.0-beta7
v0.16.0-beta6
v0.16.0-beta5
v0.16.0-beta4
v0.16.0-beta3
v0.16.0-beta2
v0.16.0-beta1
v0.15.0
v0.15.0-beta6
v0.15.0-beta5
v0.15.0-beta4
v0.15.0-beta3
v0.15.0-beta2
v0.15.0-beta1
v0.14.0
v0.14.0-beta2
v0.14.0-beta1
v0.13.0
v0.13.0-beta3
v0.13.0-beta2
v0.13.0-beta1
upstream/v0.12.4
v0.12.4
v0.12.3
v0.12.2
v0.12.2-beta1
v0.12.1
v0.12.0-beta2
v0.12.0-beta1
v0.11.0
v0.10.8
v0.10.7
v0.10.6
v0.10.5
v0.10.4
v0.10.3
v0.10.2
v0.10.1
v0.10.0
v0.9.3
v0.9.2
v0.9.1
v0.9.0
v0.8.1
v0.8.0
v0.7.1
v0.7.0
v0.6.1
v0.6.0
v0.5.2
v0.5.1
v0.5.0
v0.4.0
v0.3.6
v0.3.5
v0.3.4
v0.3.3
v0.3.2
v0.3.1
v0.3.0
v0.2.2
v0.2.1
v0.2.0
v0.1.1
v0.1.0
Labels
Clear labels
CLI
DERP
DNS
Nix
OIDC
SSH
bug
database
documentation
duplicate
enhancement
faq
good first issue
grants
help wanted
might-come
needs design doc
needs investigation
no-stale-bot
out of scope
performance
policy 📝
pull-request
question
regression
routes
stale
tags
tailscale-feature-gap
well described ❤️
wontfix
Mirrored from GitHub Pull Request
Milestone
No items
No Milestone
Projects
Clear projects
No project
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: starred/headscale#408
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 @yaroslavkasatikov on GitHub (Jan 6, 2023).
Hey team,
Do you have any plans for adding dynamic ACL support and ability to use OIDC groups in ACL?
Many thanks!
@juanfont commented on GitHub (Jan 6, 2023):
Hi @yaroslavkasatikov we are under a huge effort to add integration testing for all the ACL functionality, in preparation for a major rewrite to cover more cases.
So yes, it will come.
@aelbarkani commented on GitHub (Jan 6, 2023):
Good news! @juanfont is there any approximative timeline for it ? We can sponsor this feature if that helps accelerating the implementation.
@GoodiesHQ commented on GitHub (Aug 28, 2023):
The OIDC implementation has been working flawlessly for authorizing new users and devices, but all ACLs have to be done completely manually. I'm currently using Azure AD for SSO, but the annoyance of having to maintain two sets of groups (one in Azure and one in Headscale) is currently unavoidable.
Imagine we have 2 group ID's within Azure
ae7941be-a6e2-42e7-90df-a68ff00779fe- Admins53505c95-dcde-48d9-9e0a-d6ddf9b41efc- UsersWhen a user authenticates via OIDC:
When a user authenticates, the provided IDs in the groups claim, if provided, can be added to the database and can be updated any time a user re-authenticates. This would allow syntax like:
Either this, or treat
group:prefix as either manually putting someone in a group within the ACL OR matching a group name/ID in the oidcGroups database column.This seems feasible, where is my glaring mistake?
@github-actions[bot] commented on GitHub (Dec 24, 2023):
This issue is stale because it has been open for 90 days with no activity.
@github-actions[bot] commented on GitHub (Dec 31, 2023):
This issue was closed because it has been inactive for 14 days since being marked as stale.
@guyguy333 commented on GitHub (Dec 31, 2023):
Please consider reopen this issue @juanfont
@joachimtingvold commented on GitHub (Jan 10, 2024):
Yes, please re-open this as this is very much still relevant.
@cmueller-tp commented on GitHub (Jan 21, 2025):
Are there any updates to this? This is a major issue for being able to actually scale headscale (pun intended) :)
@kradalby commented on GitHub (Jan 22, 2025):
At the moment there is no plan to add groups from OIDC to the ACL, the main reason is that there dont seem to be any standard way the OIDC providers implement this, we are actively avoiding platforms we cannot have full end to end tests as it is unfeasible for us to maintain it over time.
As for the "Dynamic ACL", I assume in this context it is referring to having the ACL use these groups, but if not, there is not API support for updating the ACL which should be useful.
@joachimtingvold commented on GitHub (Jan 22, 2025):
That's not true. There might not be an RFC standard describing how it should be done, but all the OIDC providers and applications that I currently use groups with operate in the same way;
headscale would not need to care about the OIDC provider side; you'd only need to have a setting where you can specify what property/scope it should expect "an arrray of groups" from. If the setting is not specified, headscale would operate as it does today (i.e. no dynamic group fetching).
The above solution does not remove the possibility of having full end to end tests.
@kradalby commented on GitHub (Jan 22, 2025):
Sure, I can be up for the simple one where they pass groups as part of the OIDC claim, I have seen it with some providers.
The reason I am conservative is that I want to make it clear that something simple that supports many at the same time in a very simple implementation would be ok, and testable, while some providers, like google does not, and is not possible for us.
Can you open a separate issue with some example OIDC Claim JSON blobs that contains groups and explain the use case?
In this case, I imagine something simple, if there is a group in OIDC, we store it and you can use it in the ACL, nothing dynamic, nothing fancy.
@joachimtingvold commented on GitHub (Jan 22, 2025):
I just created #2366. Tried to give as much info as possible. If its feasible to do as I've described, it would be somewhat dynamic in the sense that you still have to specify what groups should have access to certain resources (the
acls:{}section ofacls.hujson), but you don't have to manually/statically maintain the groups and their members.