# Autenticazione con token JWT

**URL:** <https://tiledesk.discourse.group/t/autenticazione-con-token-jwt/110>\
**Category:** Technical issue\
**Created:** [January 27, 2022, 5:05pm UTC](https://tiledesk.discourse.group/t/autenticazione-con-token-jwt/110 "2022-01-27T17:05:50Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![Daniela](https://avatars.discourse-cdn.com/v4/letter/d/34f0e0/32.png) [@Daniela](https://tiledesk.discourse.group/u/Daniela)\
**Post date:** [January 27, 2022, 5:05pm UTC](https://tiledesk.discourse.group/t/autenticazione-con-token-jwt/110/1 "2022-01-27T17:05:50Z")

</div>

Ho aggiunto il codice javascript in wordpress per per aggiungere il widget della chat. Al momento del caricamento effetto la chiamata window.tiledesk.signInWithCustomToken(customJwt) per poter fare l’autenticazione di uno specifico utente (o non ospite) ma la chiamata restituisce un errore di non autorizzazione.  
Http failure response for [https://api.tiledesk.com/v2/auth/signinWithCustomToken:](https://api.tiledesk.com/v2/auth/signinWithCustomToken:) 401 OK",“error”:“Unauthorized”  
quale può essere la ragione? il sito attualmente non è in https.

---

<div class="post-metadata">

**Author:** ![andreasponziello](https://avatars.discourse-cdn.com/v4/letter/a/13edae/32.png) [@andreasponziello](https://tiledesk.discourse.group/u/andreasponziello)\
**Post date:** [January 28, 2022, 7:28am UTC](https://tiledesk.discourse.group/t/autenticazione-con-token-jwt/110/2 "2022-01-28T07:28:02Z")

</div>

Ciao Daniela,

vuoi spiegarci meglio il tuo use case? Capisco che stai utilizzando l’autenticazione JWT.  
Vuoi autenticare l’utente che hai già su Wordpress?  
Quali guide stai utilizzando? Così posso aiutarti.

Andrea

---

<div class="post-metadata">

**Author:** ![Daniela](https://avatars.discourse-cdn.com/v4/letter/d/34f0e0/32.png) [@Daniela](https://tiledesk.discourse.group/u/Daniela)\
**Post date:** [January 28, 2022, 8:45am UTC](https://tiledesk.discourse.group/t/autenticazione-con-token-jwt/110/3 "2022-01-28T08:45:56Z")

</div>

al caricamento del sito in wordpress voglio che se un utente wordpress sia autenticato allora il widget della chat si apra con i dati di questo stesso utente e quindi che compaia nell’amministrazione come utente autenticato e non cope ospite. Tramite un plugin per l’inserimento di javascript in header ho aggiunto il seguente codice:

```auto
<script type="application/javascript">  
var projectidTiledesk = idProjectMioAccountTiledesk;
jQuery( function( $ ) 
{	
   	window.tiledeskSettings=             
   	{              
	 	projectid: projectidTiledesk,
	 	isLogEnabled: false,
		//autoStart: false
   	};
         
   (function(d, s, id) 
   {              
      var w=window; var d=document; var i=function(){i.c(arguments);};               
      i.q=[]; i.c=function(args){i.q.push(args);}; w.Tiledesk=i;               
      var js, fjs=d.getElementsByTagName(s)[0];                
      if (d.getElementById(id)) return; 
              
      js=d.createElement(s);               
      js.id=id; js.async=true; js.src="https://widget.tiledesk.com/v5/launch.js";              
      fjs.parentNode.insertBefore(js, fjs);              
   }
   (document,'script','tiledesk-jssdk'));  
	
   (function(d, s, id) 
   {  
	   var js, fjs = d.getElementsByTagName(s)[0];
	   if (d.getElementById(id)) return; 
       js=d.createElement(s);               
       js.id=id; js.src="https://widget.tiledesk.com/v5/launch.js";              
      fjs.parentNode.insertBefore(js, fjs);              
   }
   (document,'script','tiledesk-jssdk'));
	
	window.Tiledesk('onLoadParams', function(event_data) 
	{
		$.ajax({
			method: "POST",
			url: efacile_ajax.url,
			data: {
				action: 'createJWTCardEfacileAuthenticate'
			},
			success: function(response)
			{
				console.log("result: " + response);
				if(response != "" && response != 0) //data != null && data.TokenJWT != "" && data.ProjectId == projectidTiledesk)
				{
					window.tiledesk.signInWithCustomToken(response);
				}
				//$("#coupon_code").val(data);	
				console.log("SUCCESS CALL AJAX createJWTCardEfacileAuthenticate");
			},
			error: function(error){
				console.log("FAIL CALL AJAX createJWTCardEfacileAuthenticate");
			}
		});
	});
})	
</script>

Praticamente ho aggiunto la parte di codice per la visualizzazione del widget e poi ho dichiarato una funzione da eseguire al momento del caricamento dei parametri, in questa funzione richiamo un ulteriore funzione php definita nel mio plugin che recupera il tokenJWT (creato con i dati dell'utente) da passare poi al metodo window.tiledesk.signInWithCustomToken(tokenJWT). 
Questa procedura funziona se io la eseguo in un sito wordpress di test (installato in localhost) ma non funziona sul sito creato che è effettivamente on line che al momento non dispone del certificato quindi la navigazione non è in https.
Questa autenticazione con window.tiledesk.signInWithCustomToken(tokenJWT) mi restituisce un errore di non autorizzazione Http failure response for https://api.tiledesk.com/v2/auth/signinWithCustomToken: 401 OK",“error”:“Unauthorized” e non capisco perchè. dove è il problema visto che utilizzando lo stesso id progetto in localhost funziona.
```

---

<div class="post-metadata">

**Author:** ![Daniela](https://avatars.discourse-cdn.com/v4/letter/d/34f0e0/32.png) [@Daniela](https://tiledesk.discourse.group/u/Daniela)\
**Post date:** [January 28, 2022, 10:40am UTC](https://tiledesk.discourse.group/t/autenticazione-con-token-jwt/110/4 "2022-01-28T10:40:57Z")

</div>

Nel mio account ho creato due progetti con il primo non mi da errore di autenticazione mentre con secondo si. Utilizzando l’ID del primo progetto quando faccio l’autenticazione e poi avvio la conversazione nella console mi risulta utente autenticato (con id quello impostato da me al momento della creazione del token) ma il nome e cognome non compare mi dice GUEST e non risulta tra i contatti. perchè? dove sbaglio?  
La creazione del token la faccio in questo modo

```auto
Dictionary<string, object> attributes = new Dictionary<string, object>()
 {
      { "numCard", cardResult.Numero }
 };
 Dictionary<string, object> payload = new Dictionary<string, object>()
  {
                { "_id", tokenResult.ProjectId + "_" + cardResult.Numero },
                { "firstname", nomeContatto },
                { "lastname", cognomeContatto },
                { "email", emailContatto },
                { "attributes", attributes },
                { "sub", "userexternal" },
                { "aud", "https://tiledesk.com/projects/" + tokenResult.ProjectId }
  };
 var secretKey = System.Text.Encoding.UTF8.GetBytes(tokenResult.ShareKey);
 token = "JWT " + JWT.Encode(payload, secretKey, JwsAlgorithm.HS256);

```

---

<div class="post-metadata">

**Author:** ![andreasponziello](https://avatars.discourse-cdn.com/v4/letter/a/13edae/32.png) [@andreasponziello](https://tiledesk.discourse.group/u/andreasponziello)\
**Post date:** [January 28, 2022, 12:59pm UTC](https://tiledesk.discourse.group/t/autenticazione-con-token-jwt/110/5 "2022-01-28T12:59:00Z")

</div>

Ciao Daniela.

Scrivi un messaggio a [support@tiledesk.com](mailto:support@tiledesk.com), così possiamo risolvere insieme il tuo problema.

Andrea

---

<div class="post-metadata">

**Author:** ![andrealeo](https://avatars.discourse-cdn.com/v4/letter/a/b9bd4f/32.png) [@andrealeo](https://tiledesk.discourse.group/u/andrealeo)\
**Post date:** [January 28, 2022, 5:49pm UTC](https://tiledesk.discourse.group/t/autenticazione-con-token-jwt/110/6 "2022-01-28T17:49:28Z")

</div>

ciao Daniela  
presta attenzione al project secret e ricordati che cambia da un progetto all’altro. Non vorrei che stessi usando lo stesso secret per entrambi i progetti.
