I am experiencing what appears to be a regression in the OpenID Connect Playground at https://www.openidconnect.net/.
Use case
I use the playground to demonstrate an OIDC authorization code flow between Cisco Duo Single Sign-On and a test OIDC application. This workflow worked successfully in the past, but it began failing several months ago.
Steps to reproduce
- Open
https://www.openidconnect.net/. - Select Configuration.
- Select Custom as the Server Template.
- Enter a valid OIDC discovery document URL.
- Select Use Discovery Document and verify that the authorization, token, and JWKS endpoints are populated correctly.
- Enter the client ID and client secret associated with the OIDC application.
- Save the configuration and select Start.
- Authenticate successfully through the identity provider.
- Allow the identity provider to redirect the browser back to the playground.
- Continue to the Exchange Code for Token step.
Expected result
The playground should use the client ID and client secret entered before the authorization redirect when it sends the authorization code to the token endpoint.
Actual result
At the token-exchange step, the playground replaces the client ID and client secret I entered with a different pair of credentials. The token request consequently fails with:
“The Exchange Could Not Be Performed.”
If I manually edit the token request and restore the correct client ID and client secret, the exchange succeeds. This indicates that the discovery document, authorization request, identity-provider authentication, callback, authorization code, and token endpoint are all functioning correctly. The failure occurs because the playground uses the wrong client credentials when constructing the token request.
Troubleshooting performed
I initially suspected local storage, browser autofill, or an extension, so I performed the following troubleshooting:
- Selected the playground’s Clear LocalStorage option.
- Cleared cookies, local storage, session storage, IndexedDB, cache storage, and service-worker data through Chrome Developer Tools.
- Completely quit and relaunched Chrome.
- Repeated the test in an Incognito window.
- Tested different server templates, including Custom, Auth0, and Google.
- Tested from a separate computer that had never previously visited the playground.
Clearing the browser data successfully removed my previously stored Duo endpoint values. However, the same site-default client ID and client secret continued to appear for every server template, including on the previously unused computer.
For security reasons, I have omitted the complete values from this post, but I can provide the non-sensitive identifying details privately if needed.
Why this appears to be a playground regression
The behavior reproduces across clean browser sessions and separate computers. The client ID and client secret therefore appear to be supplied by the playground itself rather than by local browser storage, autofill, or the OIDC discovery document.
The discovery document cannot be the source because OIDC discovery metadata does not provide client-specific credentials. In addition, the same default credentials appear regardless of which server template is selected.
The apparent sequence is:
- The user enters valid custom client credentials.
- The playground uses the configuration to start the authorization flow.
- The identity provider authenticates the user and returns an authorization code.
- The playground reloads or reconstructs its configuration after the callback.
- Site-default credentials overwrite the custom credentials.
- The token request is sent using those default credentials.
- The identity provider rejects the exchange because the authorization code was issued to a different client.
Could someone confirm whether this is a known issue or recent regression? Is there a supported workaround that will preserve custom client credentials through the callback and token-exchange steps?
Environment
- Playground:
https://www.openidconnect.net/ - Browser: Google Chrome 153.0.8010.53
- Operating system:
macOS 27.0 - Identity provider: Cisco Duo Single Sign-On
- Flow: OIDC authorization code flow
- Most recently reproduced: September 21, 2026