AI Development Declaration
This module was written by AI agents. The module maintainer reviews and takes full responsibility for all the work done by AI.
About the module
The OpenID Client Advanced module provides an OAuth 2.0/OIDC client plugin working with the OpenID Connect module which accepts file or environment variable as the secret source, supports PKCE (S256), ID token signature validation, and nonce-based replay protection.
Requirements
- Drupal core 10 or 11
- PHP 8.3 or higher
drupal/openid_connect^3.0firebase/php-jwt^7.01 (installed automatically when using Composer)
Installation
- Add the module to your project (
composer require drupal/openid_client_advanced) or place it inmodules/contrib. - Enable the module (
drush en openid_client_advancedor via Extend). - Clear caches if prompted.
Configuring a client
- Navigate to Configuration → People → OpenID Connect (
/admin/config/people/openid-connect). - Add or edit a client and choose OAuth 2.0 Advanced.
- Enter the Client ID and select the Client Secret Source:
- Plain Text: Enter the secret directly.
- Environment Variable: Enter the variable name containing the secret.
- File in Secrets Directory: Enter the filename (basename only) in the configured secrets directory.
- Decide how endpoints are set:
- Check Auto discover endpoints and provide an Issuer URL to pull endpoints from
/.well-known/openid-configuration, or - Leave it unchecked and manually enter Authorization, Token, UserInfo, and End Session endpoints.
- Check Auto discover endpoints and provide an Issuer URL to pull endpoints from
- Set Scopes (space-separated, e.g.
openid email). - Optionally enable Use PKCE (Proof Key for Code Exchange) to send
code_challenge(S256) on authorization andcode_verifieron token exchange. If PKCE is enabled and the verifier is unavailable in session at callback time, authentication is rejected and logged with a trace ID. - Save the client.
Security features
- Use PKCE (S256): Enable PKCE to send
code_challengeandcode_challenge_method=S256during authorization, thencode_verifierduring token exchange. If no verifier is available at token exchange time, login fails and a trace ID is logged and shown to the user. - Validate ID token signature: Enable verification and provide RSA/ECDSA public keys as PEM (blank-line separated) or a JWKS JSON document. Optionally restrict Allowed signature algorithms (e.g.
RS256 RS512). Failures log toopenid_connect_advanced. - Send nonce parameter: Include a nonce in authorization requests; the nonce is stored in the session and must match the
nonceclaim in the ID token or the login is rejected and logged. - Error tracing ID: When authentication failures occur (e.g. signature validation failure, nonce mismatch, missing PKCE verifier), a unique trace ID is generated and displayed to users for support correlation.
Testing
- Execute unit tests from the Drupal root:
phpunit --testsuite openid_client_advanced(or the equivalent command for your test runner). - Tests cover PKCE and nonce handling, signature validation, and JWKS parsing behaviour.
Project information
- Project categories: Access control
- Ecosystem: OpenID Connect / OAuth client
38 sites report using this module
- Created by mingsong on , updated
Stable releases for this project are covered by the security advisory policy.
There are currently no supported stable releases.

