Download the PHP package efumanti/cohesion2-library without Composer

On this page you can find all versions of the php package efumanti/cohesion2-library. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.

FAQ

After the download, you have to make one include require_once('vendor/autoload.php');. After that you have to import the classes with use statements.

Example:
If you use only one package a project is not needed. But if you use more then one package, without a project it is not possible to import the classes with use statements.

In general, it is recommended to use always a project to download your libraries. In an application normally there is more than one library needed.
Some PHP packages are not free to download and because of that hosted in private repositories. In this case some credentials are needed to access such packages. Please use the auth.json textarea to insert credentials, if a package is coming from a private repository. You can look here for more information.

  • Some hosting areas are not accessible by a terminal or SSH. Then it is not possible to use Composer.
  • To use Composer is sometimes complicated. Especially for beginners.
  • Composer needs much resources. Sometimes they are not available on a simple webspace.
  • If you are using private repositories you don't need to share your credentials. You can set up everything on our site and then you provide a simple download link to your team member.
  • Simplify your Composer build process. Use our own command line tool to download the vendor folder as binary. This makes your build process faster and you don't need to expose your credentials for private repositories.
Please rate this library. Is it a good library?

Informations about the package cohesion2-library

Cohesion2 libreria PHP

Fork modernizzato per PHP 8.3+ del progetto originale andreaval/Cohesion2PHPLibrary di Andrea Vallorani. Mantiene la stessa API pubblica della 3.x, alza il requisito minimo a PHP 8.3, riscrive le chiamate HTTPS con cURL (TLS verificato), corregge una serie di problemi di sicurezza (open redirect, XML injection, session fixation, XXE, …) e introduce una suite PHPUnit con analisi statica PHPStan a livello max. Vedi la sezione "Storia del progetto" in fondo per il dettaglio.

Libreria per l'autenticazione al sistema di SSO Cohesion2 della Regione Marche. Questa libreria permette di integrare il Single Sign-On di Cohesion2 in siti o applicativi web sviluppati in linguaggio PHP.

Requisiti di installazione

Installazione

Tramite Composer:

oppure manualmente copiando la directory cohesion2/ in un qualsiasi punto della cartella web dell'applicativo. Assicurarsi che la cartella contenga i file:

Abilitazione SSO

Il Single Sign-On è abilitato per default nella libreria. Questo significa che prima di reindirizzare l’utente alla maschera di login, il sistema verifica la validità della sessione ed evita quindi all’utente di doversi riautenticare. Per disabilitare, eventualmente il SSO, e forzare quindi sempre all’autenticazione, utilizzare il seguente comando:

Esempio di utilizzo

Identificativo applicativo (id_sito)

Cohesion2 identifica l'applicazione client tramite il campo <id_sito> incluso nel payload di richiesta. Fino alla 3.x questo valore era hardcoded a 'TEST'. Dalla 4.0.0 si imposta tramite il quarto parametro del costruttore o via variabile d'ambiente COHESION2_SITE_ID.

oppure:

Il default rimane 'TEST' per compatibilità con installazioni esistenti, ma è da sostituire prima del passaggio in produzione concordando il valore con il referente Cohesion2 della Regione Marche.

Configurazione di sicurezza: whitelist degli host di callback

L'URL di callback inviata a Cohesion2 al termine dell'autenticazione viene costruita a partire dall'host della richiesta corrente. L'header HTTP Host è però controllato dal client e, in assenza di una validazione, può essere manipolato per indurre Cohesion2 a redirigere l'utente verso un host arbitrario subito dopo il login (open redirect / token leakage, CWE-601).

A partire dalla 4.0.0 la libreria accetta una whitelist di host autorizzati. Quando la whitelist è popolata, l'header Host deve corrispondere (case-insensitive) a uno dei valori dichiarati: in caso contrario auth() solleva Cohesion2Exception. Quando la whitelist è vuota, la libreria usa $_SERVER['SERVER_NAME'] (configurato lato web server) anziché HTTP_HOST.

Impostazione via costruttore:

Impostazione via variabile d'ambiente (utile con .env):

In ambiente di produzione si consiglia di dichiarare sempre la whitelist.

Applicazioni dietro un reverse proxy / load balancer

Quando il TLS è terminato a monte (load balancer, CDN, ingress controller), $_SERVER['SERVER_PORT'] vale 80 e la libreria, in assenza di altri segnali, costruirebbe una callback URL http://… esponendo il token nel redirect.

Il terzo parametro del costruttore — trustProxy — abilita la lettura di X-Forwarded-Proto per determinare lo schema. Va attivato solo se l'app è raggiungibile esclusivamente tramite il proxy: l'header è altrimenti spoofabile.

oppure via variabile d'ambiente:

Abilitazione SAML 2.0

E' possibile indicare a Cohesion di utilizzare lo standard SAML 2.0 tramite l'apposito metodo useSAML20() . L'utilizzo di tale metodo permette agli utenti di autenticarsi anche tramite sistema SPID.

Spiegazione del meccanismo di autenticazione

Invocando il metodo auth() della classe Cohesion2 viene avviato il processo di autenticazione tramite SSO. Il processo si svolge in 4 passi:

  1. Viene invocata la pagina web https://cohesion2.regione.marche.it/sso/Check.aspx per verificare se l’utente risulti già autenticato tramite SSO
  2. Nel caso l’utente non sia autenticato, il browser dell’utente viene automaticamente reindirizzato alla pagina di login https://cohesion2.regione.marche.it/SA/AccediCohesion.aspx
  3. Se l’autenticazione ha esito positivo, la libreria istanzia una variabile di sessione per tenere traccia dell’avvenuta autenticazione ed invoca la pagina web https://cohesion2.regione.marche.it/SSO/webCheckSessionSSO.aspx per recuperare il profilo dell’utente autenticato
  4. Se il recupero del profilo è avvenuto correttamente i dati dell’utente saranno accessibili tramite le seguenti proprietà dell’oggetto istanziato:
    • $cohesion->username (Username utente autenticato)
    • $cohesion->id_sso (ID della sessione SSO)
    • $cohesion->id_aspnet (ID della sessione ASPNET)
    • $cohesion->profile (Array contenente il profilo della persona)

Per la configurazione SAML 2.0 il funzionamento è analogo, cambiano solamente gli endpoint utilizzati e le possibilita di accesso per l'utente (SPID, CIE-ID, CNS, Cohesion, eIDAS, ...)

Profilo utente autenticato

Tramite la proprietà profile è possibile accedere ai dati del profilo utente. I valori ritornati dal sistema di autenticazione vengono istanziati come chiavi dell’array profile (non tutti i campi possono risultare valorizzati).

Cohesion2 restituisce i seguenti campi: titolo, nome, cognome, sesso, login, codice_fiscale, telefono, localita_nascita, provincia_nascita, cap_nascita, regione_nascita, data_nascita, nazione_nascita, gruppo, ruolo, email, email_certificata, telefono_ufficio, fax_ufficio, numero_cellulare, indirizzo_residenza, localita_residenza, provincia_residenza, cap_residenza, regione_residenza, nazione_residenza, professione, settore_azienda, profilo_familiare, tipo_autenticazione (PW , PIN , CF).

SAML 2.0 restituisce i seguenti campi:

Esempio:

Procedura di logout

Per chiudere la sessione locale e disconnettere l’utente dal sistema di SSO utilizzare il metodo logout():

L’esempio completo è visualizzabile nel file test/logout.php o nel file test/logout_saml20.php Per chiudere, eventualmente, solo la sessione locale lasciando aperta quella del SSO utilizzare il metodo logoutLocal():

Limitazione dei metodi di autenticazione permessi

Il metodo setAuthRestriction permette di limitare i metodi di autenticazione permessi .

I valori 0,1,2,3 indicano i livelli di autenticazione da mostrare nella pagina di login Cohesion:

E’ possibile nascondere o visualizzare le modalità di autenticazione togliendo o aggiungendo i rispettivi valori separati da una virgola. L’ordine è ininfluente.

N.B. Se si intende limitare l’accesso in base al tipo di autenticazione, è necessario, oltre ad utilizzare tale metodo, inserire un controllo per gli utenti che risultino già autenticati in SSO.

Autori e storia del progetto

Libreria creata come lavoro personale da Andrea Vallorani ([email protected])

Errori comuni

Session has already been started by session.auto-start or session_start()

Verificare che nel codice non ci siano chiamate alla funzione session_start() dopo l'istanziazione della classe Cohesion2: il costruttore avvia la sessione automaticamente se non è ancora attiva.

ERRORE: il server XXX non è abilitato all'utilizzo di COHESION

Il server applicativo non è registrato lato Cohesion2. Due strade:

Appendice — esempi di XML scambiati con Cohesion2

Riferimento per chi debugga il flusso. Il payload effettivamente inviato viene costruito da Cohesion2::buildAuthXml() e codificato in base64 + urlencode prima di essere passato in querystring.

Richiesta inviata alla maschera di login

Risposta ricevuta dalla maschera di login

Risposta del metodo GetCredential (profilo utente)


All versions of cohesion2-library with dependencies

PHP Build Version
Package Version
Requires php Version ^8.3
ext-curl Version *
ext-dom Version *
ext-libxml Version *
ext-simplexml Version *
Composer command for our command line client (download client) This client runs in each environment. You don't need a specific PHP version etc. The first 20 API calls are free. Standard composer command

The package efumanti/cohesion2-library contains the following files

Loading the files please wait ...