Cohesion Info

Integrazione C#

Info Integrazione mediante classe C#

Con il presente si vuole fornire una panoramica completa delle modalità di integrazione e delle configurazioni di utilizzo del Service Provider fornito con Cohesion in applicativi web che richiedono autenticazione e profilazione utente.

Verrà in dettaglio descritta la procedura di installazione in ambiente IIS mediante classe C# CohesionSSO.cs e la configurazione per l’utilizzo classico ed il funzionamento in modalità federata SAML2.0.

Questa modalità è sempre preferibile e in particolare è necessaria qualora non venga rilasciato all’ente un certificato personale per la comunicazione con Cohesion.


Per integrare l’autenticazione in Cohesion nel proprio sito è sufficiente aggiungere la classe C# CohesionSSO.cs al proprio progetto .NET e richiamare i metodi ValidateFE e LogoutFE rispettivamente nel codice della pagina che gestisce la form authentication e della pagina di logout. I metodi vanno richiamati dopo aver inizializzato la classe mediante i costruttori disponibili. Di seguito un esempio di codice da inserire nella pagina di form authentication:

CohesionSSO cohesionSSO = new CohesionSSO(Request, Response, Session);

cohesionSSO.ValidateFE();

 

Una volta autenticati il token di autenticazione verrà automaticamente salvato nella variabile di sessione “TOKEN”.

In TestCohesion.zip è presente un esempio di progetto .NET 2010 in cui si mostra come integrare Cohesion mediante la classe CohesionSSO.

 

La classe dispone di 2 costruttori: 

  • un costruttore base con i soli parametri per recuperare le variabili di richiesta http, risposta http e sessione http.

In questo modo tutti i parametri richiesti dovranno essere specificati nel web.config. In particolare andranno impostate le seguenti chiavi nel web.config:

· sso.check.url : parametro fisso della pagina SSO di Cohesion.

· webCheckSessionSSO : parametro fisso della pagina di recupero token di autenticazione.

· sso.additionalData : parametri opzionali di autenticazione.

· site.URLLogout : url della propria pagina di logout relativo alla posizione della pagina protetta; è possibile specificare il parametro ReturnUrl con l'url della pagina a cui ritornare una volta effettuato il logout.

· site.IndexURL: url della propria pagina a cui ritornare in caso di errore di autenticazione.

Esempio di codice di configurazione in web.config:

<appSettings>

 <add key="sso.check.url" value="http://cohesion2.regione.marche.it/SSO/Check.aspx"/>

 <add key="sso.webCheckSessionSSO" value="https://cohesion2.regione.marche.it/SSO/webCheckSessionSSO.aspx"/>

 <add key="sso.additionalData" value=""/>

 <add key="site.URLLogout" value="../Logout.aspx?ReturnUrl=index.aspx"/>

 <add key="site.IndexURL" value="index.aspx"/>

</appSettings>

 

  • Un costruttore completo con tutti i parametri richiesti:

In questo modo non si avrà bisogno di specificare i parametri nel web.config ma si passeranno direttamente al costruttore:

CohesionSSO cohesionSSO = new CohesionSSO(request, response, session,

SSOCheckUrl, webCheckSessionSSOUrl, additionalData, indexUrl);

 


 

Di seguito verranno descritti due esempi di configurazione di questi parametri per utilizzare rispettivamente la modalità di funzionamento classica di Cohesion e la modalità di funzionamento federato mediante standard SAML2.0

a) Modalità di funzionamento Classica

<appSettings>

 <add key="sso.check.url" value="http://cohesion2.regione.marche.it/SSO/Check.aspx"/>

 <add key="sso.webCheckSessionSSO" value="https://cohesion2.regione.marche.it/SSO/webCheckSessionSSO.aspx"/>

 <add key="site.URLLogout" value="../Logout.aspx?ReturnUrl=index.aspx"/>

 <add key="site.IndexURL" value="index.aspx"/>

 <add key="sso.additionalData" value="AuthRestriction=0,1,2,3"/>

</appSettings>

Di seguito verranno descritti i campi che è possibile cambiare

site.URLLogout : Contiene l’url della pagina di Logout dalla posizione della pagina autenticata. Se impostato il parametro ReturnUrl redirige alla pagina indicata che di solito è la pagina iniziale.

site.IndexURL : se presente deve contenere l’url della propria pagina a cui ritornare in caso di errore di autenticazione.

sso.additionalData : Può essere vuoto o contenere il campo AuthRestricion, dove i valori 0,1,2,3 indicano i livelli di autenticazione da mostrare nella pagina di login Cohesion, in particolare:

o   0 indica di mostrare l’autenticazione con Utente e Password

o   1 indica di mostrare l’autenticazione con Utente, Password e PIN

o   2 indica di mostrare l’autenticazione con Smart Card

o   3 indica di mostrare l’autenticazione di Dominio (valida solo per utenti interni alla rete regionale)

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

 

b) Modalità di funzionamento SAML2.0

<appSettings>

 <add key="sso.check.url" value="http://cohesion2.regione.marche.it/SPManager/WAYF.aspx"/>

 <add key="sso.webCheckSessionSSO" value="https://cohesion2.regione.marche.it/SPManager/webCheckSessionSSO.aspx"/>

 <add key="site.URLLogout" 

 value= "../Logout.aspx?ReturnUrl=https%3A%2F%2Fcohesion2.regione.marche.it%2FSPManager%2FLogout.aspx"/>

 <add key="site.IndexURL" value="index.aspx"/>

 <add key="sso.additionalData" value="http://YOURHOST/YOURSITE/Logout.aspx"/>

</appSettings>


Di seguito verranno descritti I campi che è possibile cambiare

- site.URLLogout : Contiene l’url della pagina di Logout dalla posizione della pagina autenticata. A differenza della modalità classica non è però possibile cambiare il parametro ReturnUrl in quanto strettamente dipendente alle funzionalità di logout di SAML.

- site.IndexURL : se presente deve contenere l’url della propria pagina a cui ritornare in caso di errore di autenticazione.

sso.additionalData : Deve contenere obbligatoriamente il percorso completo della propria pagina di logout affinché il logout SAML funzioni correttamente. In aggiunta prima di questo url è possibile inserire, separato da un punto e virgola (;), la stringa AuthRestricion=0,1,2,3 dove i valori 0,1,2,3 indicano i livelli di autenticazione da mostrare nella pagina di login dell’Idp federato selezionato, in particolare:

o   0 indica di mostrare l’autenticazione SAML “Password”

o   1 indica di mostrare l’autenticazione SAML “Smartcard”

o   2 indica di mostrare l’autenticazione SAML “SmartcardPKI”

o   3 indica di mostrare l’autenticazione SAML “Kerberos”

I seguenti valori sono standard SAML e dovrebbero essere riconosciuti per ogni IdP federato selezionato. Nel caso venga scelto Cohesion come Idp allora i valori saranno interpretati con le modalità di autenticazione già descritte nel punto a). E’ possibile nascondere o visualizzare le modalità di autenticazione togliendo o aggiungendo i rispettivi valori separati da una virgola. L’ordine non è influente.

Es:  <add key="sso.additionalData" value=" AuthRestriction=2,1;http://HOST/YOURSITE/Logout.aspx"/> 



E' possibile forzare l'entityID utilizzato dall'utente, impostando il seguente parametro nel query string    entityID=<nome idp>:idp


Es. https://cohesion2sviluppo.regione.marche.it/SPManager/WAYF.aspx?entityID=cohesion.regione.marche.it:idp  (Sviluppo)

Es. https://cohesion2.regione.marche.it/SPManager/WAYF.aspx?entityID=cohesion2.regione.marche.it:idp  (Produzione)


 

Per qualunque dubbio fare riferimento al codice della classe CohesionSSO.


Modalità di SSO

Una volta autenticati, la sessione per il Single Sign On sarà valida per 60 minuti. Nella modalità SAML questo tempo sarà anche specificato nella risposta SAML ritornata dall’IdP. Entro tale tempo sarà possibile accedere a qualunque sito protetto da Cohesion senza che appaia la maschera di autenticazione. Il Service Provider in tal caso otterrà un nuovo token (contenente anche una nuova asserzione SAML in caso di modalità SAML) ed un rinnovamento del cookie di sessione per altri 60 minuti.

Qualora si volesse rinnovare la sessione dal proprio SP sarà perciò necessario cancellare il cookie di sessione del proprio sito entro i 60 minuti (es. a 50 minuti) e redirigere l’utente ad una propria pagina privata che richiede l’autenticazione per l’accesso. A questo punto il SP rigirerà l’utente all’IdP Cohesion che, vedendo ancora valida la sessione, aggiornerà il cookie di sessione di altri 60 minuti e ritornerà un nuovo token o una nuova asserzione SAML valida altri 60 minuti senza mostrare l’interfaccia di autenticazione.