Condividi tramite


Esempio di API protetta dal framework di consenso delle identità Microsoft

Questo articolo consente, come sviluppatore, di progettare la strategia di autorizzazioni dell'applicazione per fornire privilegi minimi. Prima di procedere, vedere l'articolo Protezione API per informazioni sulle procedure consigliate per la registrazione, le autorizzazioni e l'accesso.

Esaminiamo ora come un'API protetta da Microsoft Identity Platform usa il framework di consenso delle identità Microsoft. L'API Microsoft Graph viene usata come esempio perché usa il framework di consenso di Microsoft Identity Platform più esteso.

Convenzione di denominazione per i nomi delle autorizzazioni

Il team di Microsoft Graph ha creato una convenzione di denominazione per i nomi delle autorizzazioni per semplificare la connessione dell'autorizzazione all'accesso alla risorsa abilitata dall'autorizzazione. I nomi delle autorizzazioni di Microsoft Graph rispettano un modello resource.operation.constraint semplice. Le due operazioni principali sono Read e ReadWrite (che include l'aggiornamento e l'eliminazione).

L'elemento vincolo influisce sul grado di accesso che l'app ha all'interno della directory. Microsoft Graph supporta questi vincoli:

  • Tutte le autorizzazioni concesse all'app per eseguire le operazioni su tutte le risorse del tipo specificato in una directory.
  • Le concessioni condivise consentono all'app di eseguire le operazioni sulle risorse condivise da altri utenti con l'utente connesso.
  • AppFolder concede all'app l'autorizzazione per leggere e scrivere file in una cartella dedicata in OneDrive. Questo vincolo viene esposto solo nell'oggetto autorizzazioni Files ed è valido solo per gli account Microsoft.
  • Se si specifica Nessun vincolo, l'app può eseguire solo le operazioni sulle risorse di proprietà dell'utente connesso.

Accesso e operazioni su risorse specifiche

Verranno ora esaminate alcune autorizzazioni, o ambiti, per l'oggetto utente in Microsoft Graph per vedere come le finestre di progettazione API Microsoft hanno abilitato operazioni e accesso specifici su risorse specifiche:

Autorizzazione Visualizza stringa Descrizione
User.Read Accedere e leggere il profilo utente Consente agli utenti di accedere all'app e consente all'app di leggere il profilo degli utenti connessi. Consente inoltre all'app di leggere le informazioni aziendali di base degli utenti connessi.
User.ReadWrite Accesso in lettura e scrittura al profilo utente Consente all'app di leggere il profilo completo dell'utente connesso. Consente inoltre all'app di aggiornare le informazioni del profilo dell'utente connesso per loro conto.

User.Read e User.ReadWrite esistono (anziché una singola autorizzazione come User.Access quella non esiste) in modo che le applicazioni possano seguire il principio Zero Trust dei privilegi minimi. Se lo sviluppatore non ha requisiti e codice per aggiornare il profilo dell'utente, l'app non richiede User.ReadWrite. Pertanto, un attore non valido non può compromettere l'applicazione e usarla per modificare i dati.

Si noti che User.Read non concede solo all'applicazione l'accesso all'oggetto utente. Ogni autorizzazione rappresenta un intervallo specifico di operazioni. È importante che gli sviluppatori e gli amministratori leggano la descrizione dell'autorizzazione per vedere esattamente cosa abilita qualsiasi autorizzazione specifica. User.Read, oltre ad abilitare la lettura del profilo completo dell'utente corrente, consente all'applicazione di visualizzare le informazioni di base dell'oggetto Organizations in Microsoft Graph.

Si esaminerà ora un'altra autorizzazione:

Autorizzazione Visualizza stringa Descrizione
User.ReadBasic.All Leggere tutti i profili di base degli utenti Consente all'app di leggere un set di base di proprietà del profilo di altri utenti dell'organizzazione per nome dell'utente autenticato. Include nome visualizzato, nome e famiglia, indirizzo di posta elettronica, estensioni aperte e foto. Consente all'app di leggere il profilo completo dell'utente connesso.

L'intervallo di operazioni di User.ReadBasic.All inizia con tutto ciò che User.Read fa. Inoltre, è possibile accedere al nome visualizzato, al nome e alla famiglia, all'indirizzo di posta elettronica, alla foto e alle estensioni aperte per altri utenti dell'organizzazione. L'intervallo specifico di operazioni consente alle applicazioni di avere un'interfaccia utente piacevole per la selezione degli utenti ed è un esempio dei progettisti API che utilizzano un'autorizzazione per abilitare un intervallo di operazioni specifico.

Verranno ora esaminate altre autorizzazioni per l'oggetto utente di Microsoft Graph:

Autorizzazione Visualizza stringa Descrizione
User.Read.All Lettura dei profili completi di tutti gli utenti Consente all'app di leggere il set completo di proprietà del profilo, report e responsabili di altri utenti dell'organizzazione a nome dell'utente autenticato.
User.ReadWrite.All Leggere e scrivere tutti i profili completi degli utenti Consente all'app di leggere e scrivere l'intero set di proprietà del profilo, report e responsabili degli altri utenti della tua organizzazione per conto dell'utente autenticato e connesso. Consente inoltre all'app di creare ed eliminare utenti e reimpostare le password utente per conto dell'utente connesso.

Come per User.Read e User.ReadWriteUser.Read.All , e User.ReadWrite.All sono autorizzazioni distinte che consentono a un'applicazione di seguire il principio zero trust con privilegi minimi.

User.Read.All è interessante perché ogni utente dell'organizzazione ha questa capacità (ad esempio, aprire Outlook, navigare su e giù per una catena gerarchica di segnalazione). L'utente può visualizzare il profilo utente completo di ogni altro utente dell'organizzazione. Tuttavia, i progettisti dell'API Microsoft Graph hanno deciso che solo gli amministratori devono consentire a un'applicazione di eseguire la stessa operazione perché User.Read.All include la gerarchia organizzativa del tenant. Se un attore malintenzionato ha eseguito l'accesso a queste informazioni, potrebbe lanciare un attacco di phishing mirato in cui il messaggio di posta elettronica di phishing proviene dal manager di una persona o dal superiore del manager.

User.ReadWrite.All è una potente gamma di operazioni. Un'applicazione con questa autorizzazione può aggiornare o persino eliminare ogni utente nel tenant. Come autorizzazione delegata, quando un utente si trova davanti all'app, l'app può eseguire solo le operazioni che l'utente corrente può eseguire. Gli utenti normali non possono aggiornare o eliminare altri utenti indipendentemente dalle autorizzazioni dell'app. Tuttavia, quando un amministratore tenant usa l'app, può eseguire queste operazioni. Quando decidi di concedere o negare questa autorizzazione, valuta l'app tenendo presente il punto di vista di un utente amministratore del tenant.

Data la potenza di User.Read.All e User.ReadWrite.All, le finestre di progettazione dell'API Microsoft Graph hanno designato queste autorizzazioni come richiesta di consenso amministratore. Aggiungere una colonna Admin? alla tabella delle autorizzazioni per indicare quando l'autorizzazione richiede il consenso amministratore:

Autorizzazione Visualizza stringa Descrizione Admin?
User.Read Accedere e leggere il profilo utente Consente agli utenti di accedere all'app e consente all'app di leggere il profilo degli utenti connessi. Consente inoltre all'app di leggere le informazioni aziendali di base degli utenti connessi. No
User.ReadWrite Accesso in lettura e scrittura al profilo utente Consente all'app di leggere il profilo completo dell'utente connesso. Consente inoltre all'app di aggiornare le informazioni del profilo dell'utente connesso per loro conto. No
User.ReadBasic.All Leggere tutti i profili di base degli utenti Consente all'app di leggere un set di base di proprietà del profilo di altri utenti della tua organizzazione per conto dell'utente connesso. Include nome visualizzato, nome e famiglia, indirizzo di posta elettronica, estensioni aperte e foto. Consente all'app di leggere il profilo completo dell'utente connesso. No
User.Read.All Lettura dei profili completi di tutti gli utenti Consente all'app di leggere il set completo di proprietà dei profili, report e responsabili di altri utenti nella tua organizzazione, per conto dell'utente connesso.
User.ReadWrite.All Leggere e scrivere tutti i profili completi degli utenti Autorizza l'app a leggere e scrivere il set completo di proprietà del profilo, report e responsabili di altri utenti dell'organizzazione, per conto dell'utente autenticato. Consente inoltre all'app di creare ed eliminare utenti e reimpostare le password utente per conto dell'utente connesso.

Come illustrato nell'articolo Richiedere autorizzazioni che richiedono il consenso amministrativo , gli amministratori tenant possono ignorare i requisiti e designare qualsiasi o tutte le autorizzazioni dell'applicazione nel tenant in quanto richiedono il consenso dell'amministratore. Progettare l'app per gestire correttamente quando non si riceve un token dalla richiesta. La mancanza di consenso è uno dei molti motivi per cui l'app potrebbe non ricevere un token.

Passaggi successivi