[Bug]: OIDC: email_verified in JWT payload is only checked when creating a new account in ABS, not checked with existing accounts #3091

Closed
opened 2026-04-25 00:13:37 +02:00 by adam · 3 comments
Owner

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: false is 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: false is 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

See https://github.com/advplyr/audiobookshelf/issues/4794

Additional Notes

Filing defect to see if this is intended behavior. If it is, possible feature enhancement.

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: false` is 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: false` is 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 ```shell See https://github.com/advplyr/audiobookshelf/issues/4794 ``` ### Additional Notes Filing defect to see if this is intended behavior. If it is, possible feature enhancement.
adam added the bug label 2026-04-25 00:13:37 +02:00
adam closed this issue 2026-04-25 00:13:37 +02:00
Author
Owner

@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?

@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?
Author
Owner

@ZLoth commented on GitHub (Nov 14, 2025):

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?

It depends on what the OIDC provider is sending over as email_verified value 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): > 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? It depends on what the OIDC provider is sending over as `email_verified` value 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.
Author
Owner

@ZLoth commented on GitHub (Nov 14, 2025):

Closing as it is working as designed. Enhancement request submitted.

@ZLoth commented on GitHub (Nov 14, 2025): Closing as it is working as designed. Enhancement request submitted.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/audiobookshelf#3091