OAuth 2.0-auktorisering
OAuth 2.0 är ett auktoriseringsramverk som har blivit den de facto-standarden för att auktorisera åtkomst till skyddade resurser. Det tillåter tredjepartsapplikationer att få åtkomst till användardata utan att exponera användarens uppgifter. Istället för att dela lösenord tillhandahåller tjänster tokens.
Bakgrund
Föreställ dig att du vill använda en tredjepartsapplikation som behöver komma åt data från ditt Google-konto. Du skulle inte vilja ge denna tredjepartsapp ditt Google-användarnamn och lösenord, eller hur? Det är här OAuth kommer in. Det låter dig ge denna applikation åtkomst till din Google-data utan att dela dina Google-uppgifter.
Grunderna i OAuth 2.0
OAuth 2.0 fokuserar på enkelhet för klientutvecklare samtidigt som det tillhandahåller specifika auktoriseringsflöden för webbapplikationer, skrivbordsapplikationer, mobiltelefoner och vardagsrumsenheter. Här är en förenklad uppdelning:
Resource Owner: Användaren som auktoriserar en applikation att komma åt sitt konto. Applikationens åtkomst till användarens konto begränsas till det "scope" av auktorisering som beviljats (t.ex. läsa eller skriva en specifik typ av data).
Client: Applikationen som vill komma åt användarens konto. Innan den får göra det måste den auktoriseras av användaren och auktoriseringen måste valideras av API:et.
Resource Server: Servern som är värd för användarkontona. Den kan acceptera och svara på förfrågningar om skyddade resurser med hjälp av åtkomsttoken.
Authorization Server: Denna server verifierar användarens identitet och utfärdar sedan åtkomsttoken till applikationen.
OAuth 2.0-flöden
Det finns flera "flöden" eller "grant types" för olika typer av applikationer och användningsfall:
Authorization Code (för appar som körs på en webbserver): Detta är det vanligaste flödet, särskilt för webbappar. Det innebär att användaren omdirigeras till tjänsten, där de loggar in. Efter inloggning omdirigeras de tillbaka till applikationen med en auktoriseringskod, som applikationen kan byta mot en åtkomsttoken.
Implicit (för appar som körs i en webbläsare): Detta flöde är för klientbaserade appar (t.ex. ensidiga appar) där åtkomsttoken returneras omedelbart utan ett extra steg för utbyte av auktoriseringskod.
Resource Owner Password Credentials: Detta flöde tillåter applikationen att direkt tillhandahålla användarens användarnamn och lösenord. Det rekommenderas bara för betrodda applikationer, eftersom det innebär att dela användarens uppgifter.
Client Credentials: Används när klienten själv är resursägaren; till exempel när klienten är en bakgrundstjänst.
Tokens
Istället för att använda användarens uppgifter använder OAuth 2.0 tokens. Det finns två typer:
Access Token: Tillåter applikationen att göra API-förfrågningar på användarens vägnar. Den är kortlivad.
Refresh Token: Kan användas för att skaffa en ny åtkomsttoken om den ursprungliga åtkomsttoken har löpt ut. Den är mer långlivad än en åtkomsttoken.
Säkerhet
OAuth 2.0 förlitar sig på SSL/TLS för säkerhet. Det säkerställer datakonfidentialitet mellan klienten, auktoriseringsservern och resursservern. Även om angripare lyckas avlyssna en åtkomsttoken kan de inte använda den efter dess utgångsdatum (vanligtvis en kort varaktighet) eller utanför det scope för vilket den utfärdades.
Slutsats
OAuth 2.0 är ett kraftfullt och flexibelt ramverk som gör det möjligt för tredjepartsapplikationer att komma åt användardata utan att exponera användaruppgifter. Det har blivit ett väsentligt verktyg i det moderna webben, och ger användare och utvecklare ett säkert och effektivt sätt att bevilja och hantera behörigheter över olika tjänster och applikationer.