Skip to content

PROJQUAY-10283: update Entra OIDC server example#1626

Open
JoeAldinger wants to merge 1 commit into
quay:masterfrom
JoeAldinger:jira/PROJQUAY-10283-oidc-entra-update
Open

PROJQUAY-10283: update Entra OIDC server example#1626
JoeAldinger wants to merge 1 commit into
quay:masterfrom
JoeAldinger:jira/PROJQUAY-10283-oidc-entra-update

Conversation

@JoeAldinger
Copy link
Copy Markdown
Contributor

No description provided.

Co-authored-by: Cursor <cursoragent@cursor.com>
@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 7, 2026

Surge Preview Deployment

Preview deployed successfully!

🔗 Preview URL: https://quay-docs-pr-1626.surge.sh

Built from commit 48526c1

This preview will be updated on every push to this PR.

**Default:** `False`
**Default:** `false`

|*PKCE_METHOD* |Integer | The code challenge method used to generate the `code_challenge` sent in the initial authorization request. +
Copy link
Copy Markdown

@LiZhang19817 LiZhang19817 May 8, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In oidc-config-fields.adoc, PKCE_METHOD is listed with type Integer. The codebase (oauth/oidc.py:147-152) shows:

    def pkce_method(self) -> str:                                                                                                                                    
                                                                                                                                                                     
        method = self.config.get("PKCE_METHOD", "S256")                                                                                                              
                                                                                                                                                                     
        allowed_methods = {"S256", "plain"}                                                                                                                                                                                                             

It's a String, valid values are "S256" or "plain". The docs should also list "plain" as a valid option.

<2> The client ID of the application that is being registered with the identity provider.
<3> The client secret of the application that is being registered with the identity provider.
<4> The address of the OIDC server that is being used for authentication. In this example, you must use `sts.windows.net` as the issuer identifier. Using `https://login.microsoftonline.com` results in the following error: `Could not create provider for AzureAD. Error: oidc: issuer did not match the issuer returned by provider, expected "https://login.microsoftonline.com/73f2e714-xxxx-xxxx-xxxx-dffe1df8a5d5" got "https://sts.windows.net/73f2e714-xxxx-xxxx-xxxx-dffe1df8a5d5/"`.
<4> The address of the OIDC server that is being used for authentication. For Microsoft Entra ID, you can typically use the v2 endpoint, for example `\https://login.microsoftonline.com/<tenant_id>/v2.0/`.
Copy link
Copy Markdown

@LiZhang19817 LiZhang19817 May 8, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"typically" is vague — it either works or it doesn't.

The v2.0 endpoint returns an issuer of https://login.microsoftonline.com/<tenant_id>/v2.0 in its discovery document, which matches the OIDC_SERVER value. The v1 endpoint returns issuer https://sts.windows.net/<tenant_id>/ — a different domain. The code at oauth/oidc.py:237 reads the issuer from the discovery document and loginmanager.py:55 compares it with rstrip("/"). So v2.0 works because the issuer matches. This should be stated explicitly, not hedged with "typically."

No mention of OIDC_ISSUER fallback — The codebase has an OIDC_ISSUER override field (oauth/oidc.py:240) specifically designed for issuer mismatch scenarios. If a customer must use the v1 endpoint for some reason, they can set OIDC_ISSUER: https://sts.windows.net/<tenant_id>/. This is undocumented in both the old and new docs.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

2 participants