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 ramverket för Microsofts identitetsplattform medgivande.
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:
Behörighet | Visa strä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 Nolltillit principen om lägsta 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 angripare 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:
Behörighet | Visa strä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. |
Åtgärdsintervallet som User.ReadBasic.All
börjar med allt som gör det User.Read
. 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:
Behörighet | Visa sträng | beskrivning |
---|---|---|
User.Read.All |
Läs alla användares fullständiga profiler | Gör att appen kan läsa den fullständiga uppsättningen profilegenskaper, rapporter och chefer för andra användare i din organisation för den inloggade användarens räkning. |
User.ReadWrite.All |
Läsa och skriva alla användares fullständiga profiler | Gör att appen kan läsa och skriva hela uppsättningen profilegenskaper, rapporter och chefer för andra användare i din organisation för 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.Read.All
User.ReadWrite
, och User.ReadWrite.All
är distinkta behörigheter som gör det möjligt för ett program att följa principen med minst behörighet Nolltillit.
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 dålig aktör har åtkomst till den här informationen kan de utföra en riktad nätfiskeattack där nätfiskemeddelandet kom från en persons chef eller chefens chef.
User.ReadWrite.All
är ett kraftfullt åtgärdsområde. Ett program som beviljats 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 bör du utvärdera din app med en klientadministratörsanvändare i åtanke.
Behörigheter som kräver administratörsmedgivande
Med tanke på kraften i User.Read.All
och User.ReadWrite.All
angav Microsoft Graph API-designers dessa behörigheter som kräver administratörsmedgivande. Ska vi lägga till en administratör? Kolumn till vår tabell med behörigheter för att ange när behörigheten kräver administratörsmedgivande:
Behörighet | Visa strä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. | Nej |
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. | Nej |
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. | Nej |
User.Read.All |
Läs alla användares fullständiga profiler | Gör att appen kan läsa den fullständiga uppsättningen profilegenskaper, rapporter och chefer för andra användare i din organisation för den inloggade användarens räkning. | Ja |
User.ReadWrite.All |
Läsa och skriva alla användares fullständiga profiler | Gör att appen kan läsa och skriva hela uppsättningen profilegenskaper, rapporter och chefer för andra användare i din organisation för 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. Det är klokt att utforma din app 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
- Genom att anropa ett API från ett annat API kan du se till att Nolltillit när du har ett API som behöver anropa ett annat API och på ett säkert sätt utveckla ditt program när det fungerar för en användares räkning.
- Med auktorisering för åtkomst till resurser kan du förstå hur du bäst kan se till att Nolltillit när du hämtar behörigheter för resursåtkomst för ditt program.
- Anpassa token beskriver den information som du kan ta emot i Microsoft Entra-token. Den förklarar hur du anpassar token för att förbättra flexibiliteten och kontrollen samtidigt som du ökar säkerheten för program utan förtroende med minsta möjliga behörighet.
- Konfigurera gruppanspråk och approller i token visar hur du konfigurerar dina appar med approlldefinitioner och tilldelar säkerhetsgrupper till approller. De här metoderna bidrar till att förbättra flexibiliteten och kontrollen samtidigt som säkerheten för program utan förtroende ökar med minsta möjliga behörighet.
- Begär behörigheter som kräver administrativt medgivande beskriver behörighets- och medgivandeupplevelsen när programbehörigheter kräver administrativt medgivande.
- I den här snabbstarten: Skydda ett webb-API med Microsofts identitetsplattform laddar du ned och kör ett kodexempel som visar hur du skyddar ett ASP.NET webb-API.
- I den här självstudien – Transformera och skydda ditt API i Azure API Management lär du dig hur du konfigurerar vanliga principer för att dölja information om teknikstackar och ursprungliga URL:er i API HTTP-svarstexten.
- Metodtips för auktorisering hjälper dig att implementera de bästa auktoriserings-, behörighets- och medgivandemodellerna för dina program.