Quali dati devono essere archiviati come "Reclamo"?

7

In ASP.Net Core, trovo che l'autorizzazione Claims non sia un metodo molto concreto. Possiamo aggiungere qualsiasi cosa come ClaimType e ClaimValue pair; gruppi, firstname, lastname, brithdate, canAccessThisURI, isEditor, ecc. Tuttavia, questo approccio (che memorizza tutto ciò che può essere memorizzato come attestazioni) creerà un'enorme tabella sinistri che include il 50% dei dati della mia applicazione.

Mi sto chiedendo, come buona pratica, quali sono i dati comuni che dovrebbero essere archiviati come attestazioni?

    
posta Mohammed Noureldin 02.12.2017 - 00:14
fonte

2 risposte

2

Un reclamo è semplicemente un fatto relativo a un utente che può essere potenzialmente utilizzato per identificare o autorizzare qualcuno nel tuo sistema. Questi due vincoli dovrebbero essere sufficienti per limitare ciò che verrebbe inserito come reclamo.

Alcune idee per le affermazioni includono:

  • ID utente
  • nome utente
  • email dell'utente
  • ruoli
  • iscrizioni ai gruppi

I metadati dell'utente dovrebbero essere limitati a ciò che è necessario per personalizzare l'app per l'utente e associare l'utente ai propri dati. L'id dell'utente è sufficiente per associare l'utente ai dati o fornire una traccia di controllo. Non essere avido.

I ruoli e le appartenenze ai gruppi sono rivendicazioni di autorizzazione. Ad esempio se si dispone di gruppi nell'applicazione, l'elenco dei gruppi a cui appartiene l'utente consente di verificare rapidamente se possono accedere a un gruppo privato o meno. I ruoli sono un po 'più fini e parlano dei privilegi di un utente. Di solito sono applicazioni specifiche, quindi aggiungi solo ciò che devi applicare.

    
risposta data 05.01.2018 - 20:58
fonte
0

Ci sono molti sistemi, in particolare sistemi STS / federazione, che fanno così:

  • un reclamo che descrive l'utente in modo univoco
  • assortimento di attestazioni che descrivono cose concettuali generali a cui (e altri) hanno accesso

I dati "profilo" dell'utente all'interno dell'app non possono tradurre in / dalla fonte di autenticazione che stai utilizzando e non puoi utilizzare gli stessi endpoint in qualsiasi momento o tutti gli utenti.

Se conoscevi la vecchia autenticazione Forms è analogo al nome utente & il modello dei ruoli e molte delle cose incorporate appaiono ancora così se usi System.Security.Claims.ClaimTypes di nome e ruolo in modo appropriato.

Né il vecchio né il nuovo modello ti hanno dato un gran daffare per la rivendicazione o l'ereditarietà del ruolo, ma non è particolarmente difficile da implementare e l'implementazione ti consente di ridurre il volume di attestazioni o ruoli che devi tenere gioca dalla richiesta alla richiesta.

Se la tua applicazione ha bisogno di tenere traccia di un compleanno, ma non ha bisogno di usarlo in un meccanismo di sicurezza, allora non ha alcun vantaggio nel mantenerlo nella raccolta dei reclami. Inseriscilo in un set di dati del profilo separato o qualcosa del genere.

Se la tua applicazione ha bisogno di ottenere il compleanno come reclamo da un altro sistema, allora stai cercando qualcosa di più come la personalizzazione di federatedAuthentication o il fatto che il reclamo extra persista.

    
risposta data 05.01.2018 - 19:11
fonte

Leggi altre domande sui tag