Progettazione dell'autorizzazione e dell'autenticazione per la suddivisione di un sito in API REST e Web App (AspNetCore MVC)

1

Sto valutando la possibilità di dividere un progetto dall'API REST monolitico a server più un front-end isolato basato sul Web (o, anche, qualsiasi altro utente di terze parti) che può essere ospitato su un server e dominio distinti.

Come devo affrontare l'autenticazione e l'autorizzazione dell'utente? L'autenticazione basata su form è praticamente finita e tutte le chiamate verranno gestite allo stesso modo per gli endpoint API, indipendentemente dal fatto che provengano dalla nostra app Web o da un'app di terze parti.

L'API REST lato server diventerà il gatekeeper e consentirà l'accesso condizionale. Userei idealmente l'abbonamento standard C # ASP.Net. Framework sarebbe ASPNetCore con MVC 6.

    
posta Steve Hibbert 01.06.2017 - 12:13
fonte

2 risposte

2

Prima di tutto, ASP.NET Core non ha più il supporto per Membership , dovresti usare Identity .

Recentemente mi sono imbattuto in tale requisito mentre le nostre applicazioni crescevano e, ogni volta, dovevamo implementare l'appartenenza / l'identità per ciascuna di esse.

La soluzione che ho trovato era quella di creare un server di autenticazione centralizzato che accetti le credenziali dell'utente, connettersi al database, autenticare le credenziali e generare / restituire token ( JWT ). Questo token servirà allo scopo dell'autenticazione e dell'autorizzazione attraverso le attestazioni. Solo questa applicazione / server implementerà l'identità.

Su qualsiasi applicazione client con risorse protette ( Authorize ), dovrebbero implementare un middleware che leggerà il token e convaliderà le affermazioni. Non è necessario che il middleware si connetta nuovamente al database per convalidare le attestazioni. Questo token verrà aggiunto all'intestazione Authorization ogni volta che viene effettuata una richiesta a una risorsa protetta.

Ogni volta che crei una nuova applicazione che utilizzerà lo stesso server di autenticazione, tutto ciò che devi fare è implementare / iniettare il middleware di convalida. Non è necessario ri-implementare nuovamente l'identità.

Fai riferimento alle risorse sottostanti per le nozioni di base e amp; dettagli di implementazione.

References:

  1. link
  2. link
  3. link
  4. link

Risorse aggiuntive una volta che hai completato le basi:

  1. link
  2. link

Nota: nel mio scenario, tutte le applicazioni interagiscono con lo stesso database.

    
risposta data 02.06.2017 - 05:44
fonte
0

È sicuramente una buona idea separare frontend e backend. Per l'autenticazione e amp; autorizzazione, c'è un progetto che usa angular5 come frontend e asp.net core come backend. Utilizza aspnetcore.Identity e OpenIdConnect. Spero che tu possa trovare qualcosa con esso.

    
risposta data 21.12.2017 - 22:11
fonte

Leggi altre domande sui tag