1 messaggio dal 30 giugno 2015
Ottimo lavoro Grazie Mille !??
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao, grazie a te! Aggiungo anche:
In questo script il token viene generato automaticamente dal middleware a ogni richiesta ma questo comportamento può essere personalizzato a piacimento. Per esempio, il middleware potrebbe attendere che il token sia prossimo alla scadenza, prima di emetterne uno nuovo. Inoltre, potrebbe anche estrarre i dati dell'utente dal database, in modo da emettere un token con claim aggiornati. Questo è particolarmente importante perché se un amministratore modifica il ruolo dell'utente, è opportuno che nel prossimo token che viene emesso sia inserito il nuovo ruolo.

I claim contenuti nel token sono in chiaro ma questo non è un problema perché contiene anche la firma digitale che può essere verificata in qualsiasi momento per provarne l'integrità. L'applicazione client quindi può leggere i claim e visualizzarli nella UI, se lo ritiene opportuno. In un'applicazione Angular, per esempio, lo username dell'utente loggato può essere letto direttamente dal token e questo ci evita di dover fare una richiesta al server solo per ottenere quel valore.
Stessa cosa si può fare anche in un'applicazione ASP.NET Core MVC: in questo caso, il token JWT può essere veicolato in un cookie, letto da javascript e i claim trovati in esso possono essere stampati in appositi punti della pagina. Il vantaggio di questo approccio è che, lato server, la header del sito sarà ora priva di qualsiasi dato specifico dell'utente e perciò potrà essere messa in cache senza effetti collaterali (come suggerito da Thijs Feryn allo scorso Codemotion).
Modificato da BrightSoul il 17 aprile 2018 22.13 -

Enjoy learning and just keep making
15 messaggi dal 08 giugno 2001
Qual'è la differenza con OWIN ?
http://hamdiceylan.com/asp-net-web-api-token-based-authentication/
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao, grazie per l'interesse. Owin è una specifica (e una libreria) che può essere usata per costruire una pipeline di middleware nelle applicazioni ASP.NET, similmente a quella che abbiamo in ASP.NET Core. Quindi non è un meccanismo di autenticazione. La domanda potrebbe essere: "Qual è la differenza con OAuth2?"
JWT è solo un formato di token, cioè descrive le regole per creare "contenitore" in cui si possono inserire dei claim. OAuth2 è un protocollo che invece descrive il modo per scambiarsi dei token JWT, soprattutto quando le parti sono 3 (client, server e identity provider esterno).
Questo script presenta il caso molto semplice di 1 applicazione client che consuma 1 applicazione backend. Nulla vieta di usare OAuth2 anche in questo caso (come nell'articolo che hai postato) ma possiamo anche farne a meno e decidere noi in che maniera personalizzata consegnare il token JWT al client. Dato che ne abbiamo il controllo, è più facile da capire e manipolare secondo le esigenze dei client.
Modificato da BrightSoul il 18 aprile 2018 23.49 -

Enjoy learning and just keep making
2 messaggi dal 24 maggio 2018
Grazie. Bella guida.
Sarebbe utile che scrivessi la parte 2, ovvero come poi tutto questo è possibile utilizzarlo e come magari eseguire una richiesta di autenticazione da frontend e come poi inviare le altre richieste :)
11.886 messaggi dal 09 febbraio 2002
Contributi
Grazie a te e benevenuto nel forum! Ok, vedrò di fare un esempio di client quando mi libero.
Nel frattempo puoi usare gli strumenti di sviluppo del browser (scheda "Rete" o "Network") per ispezionare la richiesta che Swagger invia al server e poi guardare come il server risponda con un nuovo token.
Il client legge il nuovo token dall'intestazione della risposta e rimpiazza quello precedente in ogni nuova richiesta.
Ciao ciao
Modificato da BrightSoul il 26 maggio 2018 11.03 -

Enjoy learning and just keep making
5 messaggi dal 26 dicembre 2010
Scusa,

è la prima volta che devo implementare un accesso alle API segregato per permessi utente (tipo role based) e non so che autenticazione scegliere tra JWT oppure OAuth Bearer Token.
Mi sembra che siano molto simili tra loro e volevo sapere ci sono differenze sostanziali tra i 2 (performance, limitazioni ... ).
Grazie.
Modificato da e73779 il 21 giugno 2018 13.30 -
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao, descrivi il tipo di applicazione che devi realizzare. Il database degli utenti è locale all'applicazione oppure è esterno, situato in un identity provider che viene già usato per far autenticare gli utenti ad altre applicazioni? Gli utenti si possono registrare liberamente oppure c'è un amministratore che crea le credenziali per loro?

Enjoy learning and just keep making

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.