Link Search Menu Expand Document (external link)

BE 1.8 OAuth i backend

Table of contents


Autentisering vs auktorisering

  • Authentication (autentisering) - avgör om någon är den de utgör sig för att vara (till exempel om någon försöker logga in, är det en användare, stämmer lösenordet och användarnamnet etc)
  • Authorization (auktorisering) - avgör vad den autentiserade har för rättigheter (till exempel, har den inloggade personen i exemplet ovan admin-status på sidan, eller är det bara en vanlig användare)

OAuth

OAuth (Open Authorization) är ett standard protokoll för hur en webbapplikation får tillgång till en skyddad server. Istället för att klienten (browsern) pratar direkt med den skyddade servern, så kommunicerar den med ett AS (Authorization Server) som mellanhand. Om AS:et godkänner förfrågan från klienten så gör den en access token, som klienten skickar med i alla requests till servern. Servern validerar tokenen, och om den får godkänt returnerar den svaret på requesten tillbaka till klienten. 1

oauth-diagram

Roller

Fyra olika roller i OAuth:

  • Resource owner (resursägare)
    • Användaren som ger en applikation tillåtelse (auktoriserar) att få tillgång till dess konto och information
    • Tillgången är begränsat via scope
  • Client
    • Applikationen (browsern på webben) som vill komma åt en användares konto
    • Får endast göras om användaren har tillåtit (auktoriserat) det och det har blivit validerat
  • Resource server (resursserver)
    • Hanterar de skyddade användarkontona
    • Verifierar identideten av användaren och försöker applikationen med access tokens
  • Authorization server (AS)
    • Se ovan
    • Från utvecklarens perspektiv representerar API:t både resurserver och authorization server

Tokens

OAuth använder access tokens och refresh tokens.

Access tokens

När en användare loggar in på din sida, så gör AS:et en access token som applikationen använder för att kunna anropa servern säkert. Om applikationen behöver komma åt skyddad data åt en användare, så talar access tokenen om för servern att klienten har authoriserat användaren. Av säkerhetsskäl så är en access token ofta bara valid/giltig en kort tid. 2

Refresh tokens

När en access token inte är giltig längre, så kan klienten använda en refresh token för att få en ny access token, utan att användaren behöver logga in igen. En refresh token är ofta giltig betydligt längre tid än en access token.

För att hindra att någon stjäl din refresh token och på så sätt får din access token, så gör OAuth så att varje gång klienten skickar en refresh token för att förnya en access token, så svarar AS:et med både en ny access token och en ny refresh token att använda nästa gång. 2

JWT (JSON Web Tokens)

OAuth använder JWT. En token som följer JWT-strukturen är i encodat JSON-format. Det går att baka in diverse information i en token som sedan kan decodas och läsas.

Specifikationen för en JWT är uppdelad i tre delar: 1

  • Header har information om algoritmen som används för att signera tokenen.
  • Signature är en kombination av data, signerad av en private key hos AS:et (som också tillhandahåller den publika keyn). Genom att verifiera signaturen med den publika nyckeln behöver inte servern prata med AS:et för att validera tokenen.
  • Payload innehåller informationen din applikation behöver för authentication och authorization i form av key/value-par.

Referenser