3 messaggi dal 31 agosto 2013
Buongiorno,

Dopo aver comprato il libro sto smanettando per gestire l'autenticazione.
Sono riuscito da un progetto MVC a creare una pagina di Login che tramite una chiamata ajax ad una Api mi restituisce correttamente un token JWT (Ho usato l'esempio del libro).
Ora se mi serve richiamare un'altra Api, invio il token tramite HEADER e qui tutto bene, ma se una volta loggato voglio andare nelle normali pagine dove ho inserito l'attributo [Authorize] non risulto autorizzato.

Come passo il token o come faccio si che l'utente dopo il login con successo acceda ai normali controller non Api.

Devo gestire la doppia autenticazione JWT e Cookie?

Avete qualche esempio?

Grazie
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao,
per darti un consiglio preciso devo capire bene il tuo scenario.

La web api che hai costruito è a tuo unico uso e consumo (es. la chiami dalle altre pagine dell'applicazione), oppure viene anche usata da altre applicazioni esterne?

Se viene usata solo da te e dalla tua applicazione, allora puoi anche fare a meno del token jwt e usare solo l'autenticazione con i cookie. Tanto, il browser i cookie li reinvia sia che si tratti di una normale richiesta di pagina che di una richiesta ajax.

Se invece ci sono altre applicazioni che usano la tua api, allora penso che tu debba supportare sia l'autenticazione con cookie e sia l'autenticazione con token jwt.
  • Nella tua applicazione che ha un mix di controller MVC/WebAPI usi solo l'autenticazione con cookie;
  • Dalle altre applicazioni, invece, otterrai il token JWT.


Avete qualche esempio?

L'esempio ui-and-webapi-auth che trovi allegato al libro ha già tutto quello che ti serve.
Semplicemente, devi modificare l'attributo Authorize che ho messo sullo UsersController.
Da così:
[Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)]

A così:
[Authorize]

In questo modo, allo UsersController andrà bene ogni tipo di autenticazione. A quel punto non ha importanza se l'utente si era autenticato con cookie o con token JWT.

Dopo aver fatto questa modifica esegui l'applicazione, clicca il link Login che si trova in alto a destra, poi autenticati e, quando ti sei loggato, digita questo nella barra degli indirizzi del browser:
https://localhost:5001/api/Users


Vedrai che otterrai risposta anche senza aver fornito il token. L'autenticazione avviene perché il browser include automaticamente il cookie di autenticazione nella richiesta.


ciao,
Moreno
Modificato da BrightSoul il 20 luglio 2019 11:19 -

Enjoy learning and just keep making
3 messaggi dal 31 agosto 2013
Grazie Moreno per la tua risposta,

La WebApi viene usata solo dalla mia applicazione, quindi userò solo l'autenticazione con i cookie.

Ciao
Giuseppe
427 messaggi dal 13 novembre 2009
Ciao
Volendo implementare un attributo custom di autorizzazione come intercettare i valori relativi all’autorizzazione? La action sarebbe chiamata sia da maschera sia come servizio

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.