docs: correct what the openid-connect audience key does to ID tokens [10.16] - #41859
Merged
Merged
Conversation
…[10.16] The `audience` paragraph said an ID token "stops being accepted, but only where the configured value differs from the `client-id`", which made this key the thing that decides ID tokens. It is not, and has not been since the openidconnect app started requiring a token that labels its own type to label itself an access token. Where the provider puts that label in the payload - Keycloak's `typ` of `ID`, AWS Cognito's `token_use` of `id` - an ID token is refused whatever this key is set to, including not set at all. Where the provider puts no type claim in the payload, which is Entra ID and ADFS, the old sentence was right but for the wrong reason: what accepts the token is the `client-id` being an accepted audience, so setting this key to anything else rejects it as a side effect rather than as its purpose. Both halves now say so, in their own paragraph rather than wedged into the one about binding a token to a resource, which is a different property. Discussed on owncloud/openidconnect#374; the app's own README carries the same position. The admin manual's parameter reference is generated from this file, so owncloud/docs.owncloud.com#137 gets the same paragraph. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Signed-off-by: Thomas Müller <323649642+oc-tmueller@users.noreply.github.com>
This was referenced Sep 23, 2026
oc-tmueller
marked this pull request as ready for review
September 24, 2026 06:35
jvillafanez
approved these changes
Sep 24, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The
audienceparagraph added in #41846 says this about ID tokens:That makes this key the thing that decides ID tokens. It is not, and has not been since the openidconnect app started requiring a token that labels its own type to label itself an access token.
typofID, AWS Cognito'stoken_useofid— an ID token is refused whatever this key is set to, including not set at all. The check runs at the head of both the JWT and the introspection branch ofverifyToken(), before the audience is looked at, and reads nothing from the configuration.client-idbeing an accepted audience, so setting this key to anything else rejects it as a side effect rather than as its purpose.Both halves now say so, in a paragraph of their own instead of wedged into the one about binding a token to a resource, which is a different property.
Two things a review of this change turned up, fixed in the same commit:
azp,appidorclient_idnames ownCloud. The app consults only the most authoritative of those three that the token carries, so a token with an honestazpnaming another client plus a mappedclient_idnaming ownCloud is refused — the opposite of what the docs promised.Sequencing — why this is a draft
The behaviour described here ships in openidconnect 2.3.5, the ownCloud 10 line's release, which is not out: it lives in owncloud/openidconnect#368, the backport of owncloud/openidconnect#374, still under review. This must not be marked ready before that lands, or the parameter reference documents a release that behaves differently.
The matching regeneration of the admin manual is owncloud/docs.owncloud.com#137 (also a draft). That one has to merge before or with this, because the docs repo's config-in-sync job regenerates the page from core's branch HEAD and is not path-filtered — merging here first turns every subsequent docs PR red until the regenerated page lands.
Master counterpart: #41858. Discussed on owncloud/openidconnect#374.