PHPackages                             municipes/wso2\_auth - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Authentication &amp; Authorization](/categories/authentication)
4. /
5. municipes/wso2\_auth

ActiveDrupal-module[Authentication &amp; Authorization](/categories/authentication)

municipes/wso2\_auth
====================

Autenticazione WSO2.

1.0.26(5mo ago)01.2k↓33.3%GPL-3.0-onlyPHP

Since Apr 11Pushed 5mo ago1 watchersCompare

[ Source](https://github.com/municipes/wso2_auth)[ Packagist](https://packagist.org/packages/municipes/wso2_auth)[ Docs](https://github.com/municipes/wso2_auth)[ RSS](/packages/municipes-wso2-auth/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (8)Dependencies (1)Versions (15)Used By (0)

WSO2 Authentication Module
==========================

[](#wso2-authentication-module)

Panoramica
----------

[](#panoramica)

Il modulo WSO2 Authentication fornisce integrazione completa tra Drupal e il WSO2 Identity Server, consentendo l'autenticazione degli utenti tramite il protocollo OAuth2. È stato progettato specificamente per l'integrazione con i sistemi di identità digitale italiani (SPID/CIE) tramite WSO2 come intermediario.

Il modulo supporta due tipologie di utenti:

1. **Cittadini**: Utenti che accedono tramite SPID o CIE
2. **Operatori**: Utenti istituzionali (dipendenti di PA, ecc) che accedono tramite credenziali specifiche

Caratteristiche
---------------

[](#caratteristiche)

### Modulo Principale (wso2\_auth)

[](#modulo-principale-wso2_auth)

- Autenticazione OAuth2 con WSO2 Identity Server
- Supporto completo per Drupal 10 e 11.1+
- Implementazione completa Single Sign-On (SSO) e Single Logout (SLO)
- Gestione distinta di utenti cittadini e operatori
- Auto-registrazione degli utenti con mappatura campi configurabile
- Blocchi di login personalizzati
- Assegnazione automatica di ruoli con esclusioni
- Gestione dei privilegi per gli operatori
- Supporto per ambienti di produzione e staging
- Modalità debug per la risoluzione dei problemi
- Compatibilità con lo standard OpenID Connect

### Sottomodulo (wso2\_auth\_check)

[](#sottomodulo-wso2_auth_check)

- Rilevamento trasparente e automatico della sessione WSO2 attiva
- Auto-login per utenti già autenticati presso l'Identity Provider
- Controllo via iframe con intervallo configurabile
- Funzionamento completamente client-side con JavaScript
- Supporto per diverse configurazioni di Identity Provider
- Compatibilità multi-modulo (supporta anche wso2silfi se presente)

Requisiti
---------

[](#requisiti)

- Drupal 10 o 11.1+
- PHP 8.1+ (PHP 8.3 raccomandato per Drupal 11)
- Modulo [externalauth](https://www.drupal.org/project/externalauth)
- WSO2 Identity Server con supporto OAuth2/OpenID Connect

Installazione
-------------

[](#installazione)

```
composer require municipes/wso2_auth
drush en wso2_auth wso2_auth_check
```

Configurazione
--------------

[](#configurazione)

### Configurazione del Server WSO2

[](#configurazione-del-server-wso2)

Prima di configurare il modulo, è necessario impostare un'applicazione OAuth2 nel WSO2 Identity Server:

1. Registra una nuova applicazione OAuth2 con le seguenti impostazioni:

    - URL di callback: `https://tuositodrupal.it/wso2-auth/callback`
    - Tipi di grant: Authorization Code
    - Scope richiesti: openid
2. Configura l'Identity Server per l'integrazione con i fornitori d'identità (IdP) SPID e CIE, se necessario.

### Configurazione del Modulo WSO2 Authentication

[](#configurazione-del-modulo-wso2-authentication)

#### Impostazioni Generali

[](#impostazioni-generali)

1. Vai a Amministrazione » Configurazione » Persone » Impostazioni WSO2 Authentication (`/admin/config/people/wso2-auth`).
2. Abilita il modulo e configura:
    - URL del server di autenticazione (es. `https://id.055055.it:9443/oauth2`)
    - ID entità (agEntityId): L'ID entità da utilizzare per l'autenticazione (es. "FIRENZE")
    - Modalità (produzione o staging)
    - Opzioni di visualizzazione (logo SPID nel form)

#### Impostazioni per Cittadini

[](#impostazioni-per-cittadini)

1. Configura OAuth2:

    - Client ID e Client Secret
    - Scope OAuth2 (es. "openid")
2. Impostazioni utenti:

    - Auto-registrazione: abilita/disabilita
    - Ruolo predefinito da assegnare
    - Ruoli da escludere dall'assegnazione automatica
3. Mappatura campi:

    - Imposta quali campi del JWT mappare ai campi utente Drupal
    - Configurazioni specifiche per codice fiscale e altri dati personali

#### Impostazioni per Operatori

[](#impostazioni-per-operatori)

1. Abilita l'autenticazione per operatori e configura:

    - Client ID e Client Secret specifici
    - Parametri per l'autenticazione operatore
2. Configurazione privilegi:

    - Regole di mappatura ruoli basate sulle funzioni dell'operatore
    - URL del servizio privilegi per gli operatori

### Configurazione del Modulo WSO2 Authentication Check

[](#configurazione-del-modulo-wso2-authentication-check)

1. Vai a Amministrazione » Configurazione » Persone » Impostazioni WSO2 Auth Check (`/admin/config/people/wso2-auth-check`).
2. Abilita il controllo automatico e configura:
    - Intervallo di controllo (in minuti)
    - Abilita/disabilita modalità debug

Funzionamento
-------------

[](#funzionamento)

### Single Sign-On (SSO)

[](#single-sign-on-sso)

Il modulo supporta due scenari principali:

1. **Autenticazione esplicita**: L'utente clicca sui pulsanti di login per SPID/CIE (cittadino) o Operatore.
2. **Autenticazione trasparente** (tramite wso2\_auth\_check): Se un utente ha già una sessione attiva con l'IdP WSO2, viene automaticamente autenticato in Drupal quando visita il sito, senza necessità di interazione.

### Single Logout (SLO)

[](#single-logout-slo)

Quando un utente effettua il logout da Drupal, viene anche disconnesso dalla sessione WSO2, garantendo un logout completo dal sistema.

### Blocchi di Login

[](#blocchi-di-login)

Il modulo fornisce due blocchi di login che possono essere posizionati in qualsiasi regione:

1. **Blocco Login Cittadino**: Per l'autenticazione tramite SPID/CIE
2. **Blocco Login Operatore**: Per l'autenticazione specifica degli operatori

Sicurezza
---------

[](#sicurezza)

- Gestione sicura dello stato (state) per prevenire attacchi CSRF/XSRF
- Protezione del token nonce per prevenire attacchi replay
- Verifica dell'integrità del token JWT
- Controlli di sessione per prevenire sessioni non autorizzate
- Supporto HTTPS per tutte le comunicazioni
- Opzione per saltare la verifica SSL in ambienti di sviluppo (non raccomandata in produzione)

Estendere il Modulo
-------------------

[](#estendere-il-modulo)

### Hook tradizionali

[](#hook-tradizionali)

Il modulo espone diversi hook per personalizzare il comportamento:

- `hook_wso2_auth_userinfo_alter(&$user_data)`: Modifica i dati utente prima dell'autenticazione
- `hook_wso2_auth_post_login($account, $user_data, $auth_type)`: Esegue azioni dopo il login
- `hook_wso2_auth_authorization_url_alter(&$url, $params)`: Modifica l'URL di autorizzazione
- `hook_wso2_auth_token_request_alter(&$params, $code)`: Modifica i parametri della richiesta token
- `hook_wso2_auth_userinfo_request_alter(&$options, $access_token)`: Modifica la richiesta userinfo
- `hook_wso2_auth_logout_url_alter(&$url, $params)`: Modifica l'URL di logout

### Implementazione con Attributi (Drupal 11.1+)

[](#implementazione-con-attributi-drupal-111)

A partire da Drupal 11.1, il modulo supporta l'implementazione tramite attributi PHP in classi orientate agli oggetti:

#### 1. Hook con Attributi

[](#1-hook-con-attributi)

```
use Drupal\Core\Hook\Attribute\Hook;

class MyModuleHooks implements ContainerInjectionInterface {
  #[Hook(hook: 'wso2_auth_userinfo_alter')]
  public function alterUserInfo(&$user_data) {
    // Modifica i dati utente
    $user_data['display_name'] = 'Prefisso: ' . $user_data['display_name'];
  }
}
```

#### 2. Plugin con Attributi (con compatibilità all'indietro)

[](#2-plugin-con-attributi-con-compatibilità-allindietro)

```
// Approccio con doppia dichiarazione (compatibile con Drupal 10 e 11)
/**
 * Provides a 'CitizenBlock' block.
 *
 * @Block(
 *  id = "wso2_citizen_block",
 *  admin_label = @Translation("WSO2 Blocco login Cittadino"),
 * )
 */
#[Block(
  id: "wso2_citizen_block",
  admin_label: new TranslatableMarkup("WSO2 Blocco login Cittadino")
)]
class CitizenBlock extends BlockBase implements ContainerFactoryPluginInterface {
```

API
---

[](#api)

Il modulo fornisce servizi che possono essere utilizzati da altri moduli:

```
// Ottieni il servizio WSO2 Auth
$wso2_auth = \Drupal::service('wso2_auth.authentication');

// Controlla se l'autenticazione WSO2 è configurata
if ($wso2_auth->isConfigured()) {
  // Fai qualcosa...
}

// Ottieni l'URL di autorizzazione
$url = $wso2_auth->getAuthorizationUrl($destination, 'citizen');

// Ottieni il servizio helper per l'ambiente
$env_helper = \Drupal::service('wso2_auth.environment_helper');
```

Risoluzione dei Problemi
------------------------

[](#risoluzione-dei-problemi)

- Abilita la modalità debug nelle impostazioni di entrambi i moduli
- Controlla i log di Drupal per messaggi dettagliati
- Verifica la console del browser per gli errori JavaScript (per wso2\_auth\_check)
- Assicurati che i certificati SSL siano validi
- Controlla che l'URL di callback corrisponda a quello configurato nel WSO2 Identity Server

Compatibilità Drupal 11.1
-------------------------

[](#compatibilità-drupal-111)

Il modulo è completamente compatibile con Drupal 11.1, utilizzando:

- Dependency Injection moderno per tutti i servizi
- Implementazione a doppio stile (attributi e annotazioni) per i plugin
- Implementazione con attributi per gli hook
- Type hinting completo e return types per tutte le classi
- Supporto per PHP 8.3

Crediti
-------

[](#crediti)

Questo modulo è stato sviluppato da Maurizio Cavalletti come parte del progetto di integrazione dei sistemi di identità digitale italiani (SPID/CIE) con le piattaforme Drupal per la Pubblica Amministrazione.

Licenza
-------

[](#licenza)

Questo modulo è rilasciato sotto licenza [GNU General Public License v3](https://www.gnu.org/licenses/gpl-3.0.html).

###  Health Score

38

—

LowBetter than 85% of packages

Maintenance71

Regular maintenance activity

Popularity18

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity45

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~18 days

Recently: every ~30 days

Total

14

Last Release

165d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/edc87c6f4ed30d12abd5235afbc503a2d590063439efe8b4fe17d5c4574781f8?d=identicon)[akabit](/maintainers/akabit)

---

Top Contributors

[![akamizi](https://avatars.githubusercontent.com/u/12139795?v=4)](https://github.com/akamizi "akamizi (151 commits)")

### Embed Badge

![Health badge](/badges/municipes-wso2-auth/health.svg)

```
[![Health](https://phpackages.com/badges/municipes-wso2-auth/health.svg)](https://phpackages.com/packages/municipes-wso2-auth)
```

###  Alternatives

[bezhansalleh/filament-shield

Filament support for `spatie/laravel-permission`.

2.8k2.9M88](/packages/bezhansalleh-filament-shield)[gesdinet/jwt-refresh-token-bundle

Implements a refresh token system over Json Web Tokens in Symfony

70516.4M35](/packages/gesdinet-jwt-refresh-token-bundle)[illuminate/auth

The Illuminate Auth package.

9327.3M1.0k](/packages/illuminate-auth)[beatswitch/lock

A flexible, driver based Acl package for PHP 5.4+

870304.7k2](/packages/beatswitch-lock)[amocrm/amocrm-api-library

amoCRM API Client

182728.5k6](/packages/amocrm-amocrm-api-library)[vonage/jwt

A standalone package for creating JWTs for Vonage APIs

424.1M4](/packages/vonage-jwt)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
