Drupal is a registered trademark of Dries Buytaert
cms 2.1.3 Update released for Drupal core (2.1.3)! drupal 10.5.11 Update released for Drupal core (10.5.11)! drupal 11.3.11 Update released for Drupal core (11.3.11)! drupal 11.2.13 Update released for Drupal core (11.2.13)! drupal 10.6.10 Update released for Drupal core (10.6.10)! cms 2.1.2 Update released for Drupal core (2.1.2)! drupal 11.1.10 Update released for Drupal core (11.1.10)! drupal 10.5.10 Update released for Drupal core (10.5.10)! drupal 10.4.10 Update released for Drupal core (10.4.10)! drupal 11.2.12 Update released for Drupal core (11.2.12)! drupal 11.3.10 Update released for Drupal core (11.3.10)! drupal 10.6.9 Update released for Drupal core (10.6.9)! drupal 10.6.8 Update released for Drupal core (10.6.8)! drupal 11.3.9 Update released for Drupal core (11.3.9)! drupal 11.3.8 Update released for Drupal core (11.3.8)! drupal 11.3.7 Update released for Drupal core (11.3.7)! drupal 11.2.11 Update released for Drupal core (11.2.11)! drupal 10.6.7 Update released for Drupal core (10.6.7)! drupal 10.5.9 Update released for Drupal core (10.5.9)! cms 2.1.1 Update released for Drupal core (2.1.1)!

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.0
  • firebase/php-jwt ^7.01 (installed automatically when using Composer)

Installation

  1. Add the module to your project (composer require drupal/openid_client_advanced) or place it in modules/contrib.
  2. Enable the module (drush en openid_client_advanced or via Extend).
  3. Clear caches if prompted.

Configuring a client

  1. Navigate to Configuration → People → OpenID Connect (/admin/config/people/openid-connect).
  2. Add or edit a client and choose OAuth 2.0 Advanced.
  3. 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.
  4. 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.
  5. Set Scopes (space-separated, e.g. openid email).
  6. Optionally enable Use PKCE (Proof Key for Code Exchange) to send code_challenge (S256) on authorization and code_verifier on 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.
  7. Save the client.

Security features

  • Use PKCE (S256): Enable PKCE to send code_challenge and code_challenge_method=S256 during authorization, then code_verifier during 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 to openid_connect_advanced.
  • Send nonce parameter: Include a nonce in authorization requests; the nonce is stored in the session and must match the nonce claim 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.

Activity

Total releases
13
First release
Oct 2025
Latest release
3 months ago
Release cadence
11 days
Stability
0% stable

Release Timeline

Releases

Version Type Release date
1.0.0-rc8 Pre-release Mar 1, 2026
1.0.0-rc7 Pre-release Feb 6, 2026
1.0.0-rc6 Pre-release Jan 24, 2026
1.0.0-rc5 Pre-release Jan 24, 2026
1.0.0-rc4 Pre-release Dec 16, 2025
1.0.0-rc3 Pre-release Nov 25, 2025
1.0.0-rc2 Pre-release Nov 19, 2025
1.0.0-rc1 Pre-release Nov 19, 2025
1.0.0-beta3 Pre-release Nov 19, 2025
1.0.0-beta2 Pre-release Nov 19, 2025
1.0.0-beta1 Pre-release Nov 1, 2025
1.0.0-alpha1 Pre-release Oct 22, 2025
1.0.x-dev Dev Oct 22, 2025