Wizard Home

Cod. Ultima revisione Wiki Note
841 2021/05/19 - PG integrazione_cms_esterno
Permette di mediare l'accesso a contenuti di servizi esterni tramite il sistema di autenticazione zotsell. 


Caratteristica

I servizi coinvolti sono 
- Servizio Zotsell (Buy o Sell) :  ad esempio  BaseUrl : test-enterprise.zotsell.com 
- CMS esterno : ad esempio BaseUrl: www.miocms.com/

La caratteristica fornisce gli strumenti per permettere al CMS di verificare l'utente con il sistema di Login Zotsell per permettergli o meno l'accesso alle risorse del CMS stesso

Gli strumenti predisposti sono i seguenti 


Autenticazione - Validazione

E' utilizzato un sistema simile a OAuth, anche se in questo caso non è necessario la separazione del client dalla risorsa protetta (pagine cms)

Non è possibile utilizzare un'autenticazione diretta di base passando per il servizio cms, ossia fare in modo che un form sul cms del cliente accetti username e password, le legga e le mandi al server di Zotsell per l'autenticazione, questo perché l'utenza non può essere condivisa con un singolo servizio, essendo tale utenza propria della singolo user che potrebbe utilizzarla su più servizi Zotsell.

La verifica della validità dell'autenticazione utente viene eseguita tramite l'utilizzo di un access token (code) che può essere verificato dal CMS tramite apposita API  PATH: /app/0.1/checkcodes


API

Di seguito le specifiche delle API di riferimento

API - checkcodes

L'API è predisposta su  base url del servizio Zotsell (Es test.enterprise.zotsell.com)

URL : /app/0.1/checkcodes

Method:GET

HEADER

Required:
code=[string]:

Success Response

Code: 200
Content:
{
   "status":"codice autorizzato",
   "email": "enterprisebuyer002@zotsell.com",
   "user_type": ""
}

Error Response


Code: 401 Unauthorized
Content: Case 1
Login non va a buon fine

{
   "status":"codice scaduto",
}
Content: Case 2
Utente non esiste nel DB locale o il role è diverso da base (Accounts::ROLE_REGISTERED_USER (6))

{
   "status":"codice non autorizzato",
}


Esempio

La verifica del code deve essere eseguita passandolo all'api nel Header

curl --location --request GET 'https://test-enterprise.zotsell.com/app/0.1/checkcodes'
 --header 'code: vOgHEKCG1VXgPQCryj7VeMtF3iZgazvNNSN3lcSKrGDRNGg6f8l80dAzaHtrhEPE'
 --data-raw ''


API - logout

E' disponibile una API per eseguire il logout utente al path 

URL : /app/0.1/logout

Method:GET

HEADER

Required:
code=[string]:

Success Response

Code: 200
{
   "status": 0,
}

Esempio

curl --location --request GET '<a href="https://test-enterprise.zotsell.com/app/0.1/logout">https://test-enterprise.zotsell.com/app/0.1/logout</a>' 
 --header 'code: vOgHEKCG1VXgPQCryj7VeMtF3iZgazvNNSN3lcSKrGDRNGg6f8l80dAzaHtrhEPE' 
--data-raw ''

Workflow

Di seguito sono rappresentati le fasi del workflow da utilizzare e relative descrizioni









Step 1 /2 - Accesso a pagina protetta del CMS  e redirect per Prima autenticazione 


Al primo accesso al CMS  l'utente non essendo riconosciuto dal CMS dovrebbe essere rediretto alla pagina di autenticazione del Vostro server Zotsell con un url  contenente il link di ritorno al CMS nella forma

<a href="https://#ZOTSELLSERVER#?redirect_url=#URLVOSTROCMS#" "="">https://#ZOTSELLSERVER#?redirect_url=#URLVOSTROCMS...</a>
Esempio
<a href="https://test-enterprise.zotsell.com/site/login?redirect_url=http://www.miocms.com">https://test-enterprise.zotsell.com/site/login?red...</a>

Il browser atterrerà sulla pagina login di Zotsell e richiederà i parametri di autenticazione


Step 3 - Autenticazione tramite login

Zotsell presenta la pagina di autenticazione richiedendo username e password che permetterà all'utente di eseguire il processo di autenticazione nel sistema.

Una volta che l'utente ha utilizzato dei parametri di autenticazione validi il sistema di Zotsell provvederà a redirigere l'utente  al redirect_url indicato  con il parametro code e mail

www.miocms.com?code=qwertyuiopasdfghjklzxcvbnm&mail=mail@mail.com


Step 4 - API - Ritorno al CMS con l'authentication code e verifica validità code


Il CMS  utilizzando l'API può verificare la validità del query param 'code' con cui l'utente si presenta al CMS 

L'API avrà le seguenti risposte : 

codice: 200


{ "status":"codice autorizzato", "email":"enterprisebuyer002@zotsell.com" "user_type":"" }<br>

codice: 401


{ "status":"codice scaduto" }

{ "status":"codice non autorizzato" }

In questi casi è necessario che il CMS riesegua  il processo dello step 1 


Step 5 - Logout


Per eseguire un logout  si utilizza l'apposita API   /app/0.1/logout transando il code negli header 

curl --location --request GET '<a href="https://test-enterprise.zotsell.com/app/0.1/logout">https://test-enterprise.zotsell.com/app/0.1/logout</a>' 
 --header 'code: vOgHEKCG1VXgPQCryj7VeMtF3iZgazvNNSN3lcSKrGDRNGg6f8l80dAzaHtrhEPE' 
--data-raw ''

Una volta effettuato il logout il CMS reindirizza al login di zotsell con il parametro redirect_url, non essendoci sessioni aperte si rimane sul form di login in attesa delle immissioni delle credenziali

Sessioni su Zotsell

Il sistema Zotsell manterrà le sessioni attive per il codice generato al momento dell'autenticazione, che verrà cancellato nel momento in cui un utente esegue un logout dal sistema, oppure fino a quando scade.

Il sistema di scadenza verrà impostato in questa maniera.
  1. La scadenza verrà fissata a  72 ore (E' possibile eventualmente richiedere la modifica). 
  2. Se il codice viene controllato viene fatto un rinnovo del tempo di scadenza spostandola dal tempo attuale in avanti di 72 ore. 
  3. Questo  fa in modo che il codice di autorizzazione non scada mai fino a quando l'utente è attivo. 
  4. Se il codice non viene controllato per 72 ore allora al momento del controllo il cms deve fare in modo che il browser venga ridiretto alla pagina di login e la sessione viene cancellata.

Sessioni su CMS

Il volume di chiamate al sistema Zotsell per la verifica del codice di autenticazione potrebbe essere rilevante, quindi è consigliabile  prevedere a livello del cms un sistema di "trust session", ossia una registrazione delle sessioni con il codice che mantenga "fidata" tale sessione per un tempo di 5/10 minuti e che poi lo richieda alla scadenza di tale tempo.

Esempio di processo lato CMS .
  1. Il browser ottiene il codice di autorizzazione e lo presenta al cms
  2. Il cms registra il codice di autorizzazione e lo verifica presso il sistema di Zotsell
  3. Una volta verificato lo registra su una tabella di supporto registrando la data di verifica
  4. La seconda volta che il codice di autorizzazione viene presentato al cms viene verificato se dalla data di verifica sono passati 5 minuti.
  5. Se non sono passati si fida del codice e permette all'utente di accedere
  6. Se sono passati più di 5 minuti ricontrolla sul sistema di Zotsell se il codice è ancora valido.
  7. Se è ancora valido registra nuovamente la data di verifica attuale.




Settings base


Setting Descrizione Codice riferimento

Etichetta link da Zotsell Etichetta da presentare nella pagina di atterraggio zotsell per portare l'utente al CMS dalla Dashboard di Zotsell cms_external_link_anchor
URl CMS per link da Zotsell Url da associare all'etichetta del setting precedente per portare l'utente al CMS dalla Dashboard di Zotsell cms_external_link
Attenzione La modifica dei setting di default è un operazione che comporta delle attività di riconfigurazione e ri-compilazione e personalizzazione e come tale comporterà un costo.


Argomenti Correlati