Dela via


Exempel på API som skyddas av Microsofts ramverk för identitetsmedgivande

Den här artikeln kan hjälpa dig som utvecklare att utforma din strategi för programbehörigheter för att ge minst behörighet. Innan du fortsätter kan du läsa artikeln om API-skydd för att lära dig metodtips för registrering, behörigheter och åtkomst.

Låt oss ta en titt på hur ett API som skyddas av Microsofts identitetsplattform använder Microsofts ramverk för identitetsmedgivande. Vi använder Microsoft Graph API som vårt exempel eftersom det gör den mest omfattande användningen av Microsofts ramverk för medgivande för identitetsplattform.

Namngivningskonvention för behörighetsnamn

Microsoft Graph-teamet skapade en namngivningskonvention för behörighetsnamn för att göra det enklare att ansluta behörigheten till den resursåtkomst som behörigheten aktiverar. Microsoft Graph-behörighetsnamn följer ett enkelt resource.operation.constraint-mönster . De två primära åtgärderna är Read och ReadWrite (som inkluderar uppdatering och borttagning).

Villkorselementet påverkar den åtkomstgrad som appen har i katalogen. Microsoft Graph har stöd för följande begränsningar:

  • Alla beviljar behörighet för din app att utföra åtgärderna på alla resurser av den angivna typen i en katalog.
  • Delade beviljar behörighet för din app att utföra åtgärderna på resurser som andra användare har delat med den inloggade användaren.
  • AppFolder ger din app behörighet att läsa och skriva filer i en dedikerad mapp i OneDrive. Den här begränsningen exponeras endast för objektet Filer-behörigheter och är endast giltig för Microsoft-konton.
  • Om du anger Ingen begränsning kan appen bara utföra åtgärderna på de resurser som den inloggade användaren äger.

Åtkomst och åtgärder mot specifika resurser

Nu ska vi titta på några behörigheter eller omfång för användarobjektet i Microsoft Graph för att se hur Microsoft API-designers har aktiverat specifik åtkomst och åtgärder mot specifika resurser:

Tillåtelse Visningssträng Beskrivning
User.Read Logga in och läsa användarprofil Tillåter användare att logga in på appen och gör att appen kan läsa profilen för inloggade användare. Det gör också att appen kan läsa grundläggande företagsinformation för inloggade användare.
User.ReadWrite Läs- och skrivåtkomst till användarprofil Tillåter att appen läser den inloggade användarens fullständiga profil. Det gör också att appen kan uppdatera den inloggade användarens profilinformation för deras räkning.

User.Read och User.ReadWrite finns (i motsats till en enda behörighet som User.Access den finns inte) så att program kan följa principen Noll förtroende för minsta behörighet. Om utvecklaren inte har något krav och kod för att uppdatera användarens profil ber appen inte om User.ReadWrite. Därför kan en dålig aktör inte kompromettera programmet och använda det för att ändra data.

Observera att User.Read inte bara ger programmet åtkomst till användarobjektet. Varje behörighet representerar ett visst åtgärdsområde. Det är viktigt att utvecklare och administratörer läser behörighetsbeskrivningen för att se exakt vad en specifik behörighet möjliggör. User.Read, förutom att aktivera läsning av den aktuella användarens fullständiga profil, gör det möjligt för programmet att se grundläggande information från organisationsobjektet i Microsoft Graph.

Nu ska vi titta på en annan behörighet:

Tillåtelse Visningssträng Beskrivning
User.ReadBasic.All Läs alla användares grundläggande profiler Gör att appen kan läsa en grundläggande uppsättning profilegenskaper för andra användare i organisationen för den inloggade användarens räkning. Innehåller visningsnamn, för- och efternamn, e-postadress, öppna tillägg och foto. Tillåter att appen läser den inloggade användarens fullständiga profil.

Driftområdet för User.ReadBasic.All börjar med allt som User.Read gör. Dessutom kan du komma åt visningsnamn, för- och efternamn, e-postadress, foto och öppna tillägg för andra organisationsanvändare. Det specifika åtgärdsintervallet gör det möjligt för program att ha ett trevligt användargränssnitt för personväljaren och är ett exempel på API-designers som använder en behörighet för att aktivera ett visst åtgärdsintervall.

Nu ska vi titta på några fler behörigheter för Microsoft Graph-användarobjektet:

Tillåtelse Visningssträng Beskrivning
User.Read.All Läs alla användares fullständiga profiler Gör att appen kan läsa hela uppsättningen av profilegenskaper, rapporter och chefer för andra användare i din organisation på uppdrag av den inloggade användaren.
User.ReadWrite.All Läsa och skriva alla användares fullständiga profiler Gör att appen kan läsa och skriva alla profilattribut, rapporter och chefer för andra användare i din organisation på den inloggade användarens räkning. Gör också att appen kan skapa och ta bort användare och återställa användarlösenord för den inloggade användarens räkning.

Precis som med User.Read och User.ReadWrite, är User.Read.All och User.ReadWrite.All distinkta behörigheter som gör det möjligt för en applikation att följa principen om nollförtroende med lägsta möjliga behörighet.

User.Read.All är intressant eftersom alla användare i organisationen har den här funktionen (till exempel öppna Outlook, gå upp och ned i en rapporteringskedja). Som individ kan du se den fullständiga användarprofilen för alla andra användare i din organisation. Microsoft Graph API-designers beslutade dock att endast administratörer ska tillåta att ett program utför samma åtgärd eftersom User.Read.All den innehåller klientorganisationens organisationshierarki. Om en ondsint aktör har åtkomst till den här informationen kan de genomföra en riktad nätfiskeattack där nätfiskemeddelandet såg ut att komma från en persons chef eller chefens chef.

User.ReadWrite.All är ett kraftfullt verksamhetsområde. Ett program med den här behörigheten kan uppdatera, eller till och med ta bort, alla användare i klientorganisationen. När en användare är framför appen som delegerad behörighet kan appen bara göra vad den aktuella användaren kan göra. Vanliga användare kan inte uppdatera eller ta bort andra användare oavsett appens behörigheter. Men när en klientorganisationsadministratör använder appen kan de utföra dessa åtgärder. När du bestämmer dig för att bevilja eller neka den här behörigheten utvärderar du din app med en klientadministratörsanvändare i åtanke.

Med tanke på kraften i User.Read.All och User.ReadWrite.Allangav Microsoft Graph API-designers dessa behörigheter som kräver administratörsmedgivande. Nu ska vi lägga till en administratörskolumn i vår behörighetstabell för att ange när behörigheten kräver administratörsmedgivande:

Tillåtelse Visningssträng Beskrivning Admin?
User.Read Logga in och läsa användarprofil Tillåter användare att logga in på appen och gör att appen kan läsa profilen för inloggade användare. Det gör också att appen kan läsa grundläggande företagsinformation för inloggade användare. No
User.ReadWrite Läs- och skrivåtkomst till användarprofil Tillåter att appen läser den inloggade användarens fullständiga profil. Det gör också att appen kan uppdatera den inloggade användarens profilinformation för deras räkning. No
User.ReadBasic.All Läs alla användares grundläggande profiler Gör att appen kan läsa en grundläggande uppsättning profilegenskaper för andra användare i organisationen för den inloggade användarens räkning. Innehåller visningsnamn, för- och efternamn, e-postadress, öppna tillägg och foto. Tillåter att appen läser den inloggade användarens fullständiga profil. No
User.Read.All Läs alla användares fullständiga profiler Gör att appen kan läsa hela uppsättningen av profilegenskaper, rapporter och chefer för andra användare i din organisation på uppdrag av den inloggade användaren. Ja
User.ReadWrite.All Läsa och skriva alla användares fullständiga profiler Gör att appen kan läsa och skriva alla profilattribut, rapporter och chefer för andra användare i din organisation på den inloggade användarens räkning. Gör också att appen kan skapa och ta bort användare och återställa användarlösenord för den inloggade användarens räkning. Ja

Som visas i artikeln Begärandebehörigheter som kräver administrativt medgivande kan klientadministratörer åsidosätta kraven och ange alla eller alla programbehörigheter i klientorganisationen som kräver administratörsmedgivande. Utforma appen så att den hanteras korrekt när du inte tar emot en token från din begäran. Brist på medgivande är en av många orsaker till att din app kanske inte får en token.

Nästa steg