Autorizzazione e autenticazione in un'applicazione DDD

1

Considera un sito web come: Confused.com, che è un sito di comparazione dei prezzi che ha milioni di utenti registrati che lo usano per scopi di confronto dei prezzi. Questi utenti registrano i loro dettagli ai fini del confronto dei prezzi?

Come gestisci l'amministrazione, ovvero le persone che lavorano per l'azienda in questione? Ad esempio, diciamo che l'utente amministratore x vuole vedere tutte le citazioni che sono state generate nelle ultime 24 ore.

Utilizzeresti l'identità di ASP.NET per l'autenticazione e l'autorizzazione basata sui ruoli è stata utilizzata per l'autorizzazione. Questo significherebbe:

1) Tutti gli utenti, siano essi amministratori o non amministratori (ricerche di confronto prezzi), sarebbero contenuti nella stessa tabella Identità ASP.NET.

2) Dopo che l'utente ha effettuato l'accesso, l'app scoprirà se sono admin. Se sono admin, sullo schermo vengono visualizzate opzioni aggiuntive o vengono reindirizzati a una pagina web di amministrazione.

Suona bene? In alternativa è possibile sviluppare un'app separata per l'amministratore.

Come si fa normalmente?

    
posta w0051977 30.08.2017 - 14:49
fonte

2 risposte

1

Questa è l'idea generale. Gestione identità gestisce sia il lato Identificazione sia Autenticazione . In altre parole, ti fornisce informazioni su un utente e si accerta che sappiamo che l'utente è chi dice di essere.

L'applicazione prende quindi decisioni esplicite per consentire l'accesso a determinate funzionalità. Quel processo è chiamato Autorizzazione . Asp.Net MVC ha funzionalità aggiuntive per aiutarti come gli attributi relativi all'autorizzazione:

[AllowAnonymous]

Consenti esplicitamente a chiunque di eseguire questa azione, sovrascrive l'autorizzazione a livello di classe

[Authorize]

Autorizza qualsiasi utente autenticato

[Authorize(Roles = "Administrators, Content Editor")]

Autorizza gli utenti con il ruolo Administrators o Content Editor

Ciò che fanno è impedire l'accesso alle persone che conoscono l'URL ma non hanno l'autorizzazione appropriata per accedere alla parte dell'applicazione che si desidera proteggere. Il server risponde con un errore 401 che significa "Non autorizzato".

È buona prassi rimuovere semplicemente pulsanti o collegamenti che portano alle aree protette dell'applicazione se l'utente non ha accesso. Una volta che si collegano e sono correttamente autenticati, possiamo concedere loro l'accesso.

    
risposta data 30.08.2017 - 15:35
fonte
0

Normalmente segmenterai o "modificherai" la tua applicazione. Con MVC puoi utilizzare le aree e applicare un'autorizzazione diversa a un'area / a 'admin' (e altre).

La differenziazione qui è:

  • Authentication , che determina se l'utente è autorizzato ad accedere
  • Authorization , che determina a cosa l'utente può accedere

Se si modularizza l'applicazione in numerose aree, è possibile applicare l'autorizzazione su tali aree e anche security trim di menu o visualizzazioni per ruolo di autorizzazione utilizzando alcuni meccanismi incorporati.

Procedura dettagliata: organizzazione di un'applicazione utilizzando le aree

A seconda della tua adesione al DDD, potresti anche potenzialmente utilizzare un'area per dominio e fare un ulteriore passo avanti in ogni area come entità indipendente in modo che team diversi possano codificare e testare ciascuna area in isolamento delle altre aree prima di portarla insieme per il test e2e del superset di aree / domini.

    
risposta data 30.08.2017 - 16:39
fonte

Leggi altre domande sui tag