mirror of
https://github.com/juanfont/headscale.git
synced 2026-01-11 20:00:28 +01:00
OIDC returns empty namespace if id_token doesn't contain email #357
Closed
opened 2025-12-29 01:27:35 +01:00 by adam
·
9 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#357
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 @oplik0 on GitHub (Oct 22, 2022).
Bug description
If the OpenID Connect provider doesn't return user email in
id_tokenreturned from the token endpoint Headscale doesn't even error out - instead it just creates an empty namespace. Ideally userinfo endpoint would be used to supplement lacking data. I'd however prefer at least failing the registration to the current hard to debug behaviour.To Reproduce
emailscopeExample reproduction in OCI (free account has access to everything required for this):
Confidential ApplicationtypeRedirect URLfield and addMeunderGrant the client access to Identity Cloud Service Admin APIsContext info
The only provider I've seen do this is Oracle Cloud - they seem to return everything correctly to the callback with
response_type id_tokenbut not undertokenendpoint where they ignore everything that could be added from scopes and delegate it to userinfo.I see that there is already code for utilizing userinfo that is just commented out (
ecce82d44a/oidc.go (L161-L166)) - with my understanding being that it was unclear at what point it would be best to use it (presumably with the assumption that it just expanded the information about the user beyond the essentials). But as can be seen here sometimes even the essentials hide there. I think at least attempting to use it in case any of the fields are empty in id_token would be a reasonable idea.@kradalby commented on GitHub (Apr 19, 2023):
I will close this as it might have been fixed in newer version, please try a new release and reopen if it still does not work.
@github-actions[bot] commented on GitHub (Oct 18, 2023):
This issue is stale because it has been open for 180 days with no activity.
@fredrikekre commented on GitHub (Oct 20, 2023):
I just ran in to this so I don't think it is fixed. I used 0.22.3 though, but it looks like the relevant code hasn't changed as compared to current main branch. I think it comes down to:
fb4ed95ff6/hscontrol/oidc.go (L581-L584)where there is no check if the resulting username is empty. Perhaps the empty email should be caught earlier though, perhaps when extracting the claims infb4ed95ff6/hscontrol/oidc.go (L356)? I am happy to attempt a PR with the option maintaners like best. It was pretty confusing to end up with an empty user.@kc2idb commented on GitHub (Oct 28, 2023):
I am also experiencing the same bug.
@github-actions[bot] commented on GitHub (Jan 27, 2024):
This issue is stale because it has been open for 90 days with no activity.
@github-actions[bot] commented on GitHub (Feb 4, 2024):
This issue was closed because it has been inactive for 14 days since being marked as stale.
@fredrikekre commented on GitHub (Feb 4, 2024):
I believe this is still an issue judging by the code I linked above (which hasnt changed AFAICT).
@KristofferC commented on GitHub (Feb 4, 2024):
If a bug is reported and there has been no activity then presumably the bug report is still valid so how could automatically closing based on inactivity ever make sense..?
@almereyda commented on GitHub (Feb 4, 2024):
As a side note, because you were asking when this would ever be useful, I think it makes sense in heavy traffic issue trackers, where actual issues will resurface, when previous instances were already closed. This also encourages active participation in an issue, because it else times out without it, and prevents a fire-and-forget mentality, where issues are just left for the maintainers to solve. Closing inactive issues makes sure that the open ones always have an active case in which the documented regression appears.