mirror of
https://github.com/advplyr/audiobookshelf.git
synced 2026-05-30 23:40:40 +02:00
[Bug]: OIDC: email_verified in JWT payload is only checked when creating a new account in ABS, not checked with existing accounts #3091
Reference in New Issue
Block 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 @ZLoth on GitHub (Nov 14, 2025).
What happened?
As observed in https://github.com/advplyr/audiobookshelf/issues/4794 , if the field/value
email_verified: falseis passed in the OIDC JWT payload, a new account cannot be created on ABS as designed. However, existing accounts are about to login.What did you expect to happen?
Pre-existing accounts should follow behavior of new accounts and provide an "Unauthorized" message in the login screen if
email_verified: falseis part of the OIDC JWT payload.Steps to reproduce the issue
See https://github.com/advplyr/audiobookshelf/issues/4794
Audiobookshelf version
2.30
How are you running audiobookshelf?
Docker
What OS is your Audiobookshelf server hosted from?
Linux
If the issue is being seen in the UI, what browsers are you seeing the problem on?
Chrome
Logs
Additional Notes
Filing defect to see if this is intended behavior. If it is, possible feature enhancement.
@Vito0912 commented on GitHub (Nov 14, 2025):
I would not consider this a bug, as the user had to have a verified email. There is no chance to map another user that has an unverified.
On top this would break every Authentik instance instead of just the ones that did not create new users.
Maybe I overlook something, but how can an email address (out side of this situation, after it was verified at least once) be unverified again?
@ZLoth commented on GitHub (Nov 14, 2025):
It depends on what the OIDC provider is sending over as
email_verifiedvalue as part of the JWT payload. As determined by the original defect, Authenik was hard-coding the value as either true prior to 2025.10 or false starting in 2025.10 . It's a security thing.@ZLoth commented on GitHub (Nov 14, 2025):
Closing as it is working as designed. Enhancement request submitted.