Articles

Autentiseringsprotokoll för webbplatser

Autentiseringssystem är ryggraden i många webbplatser. Det gör det möjligt för användare att logga in på din webbplats och bevara data mellan besöken. Det är avgörande för att erbjuda en robust användarupplevelse som belönar dina användare för att de lämnar sina uppgifter. Autentiseringar ger ofta tillgång till personliga privata uppgifter som kan skada användaren om de offentliggörs. För att förhindra detta skapades autentiseringsprotokoll för att säkra förfrågningarna samtidigt som användarna fortfarande kan logga in i ditt system på ett säkert sätt från vilken miljö som helst.

Basic SSL Auth

Basic auth är den enklaste formen av webbautentisering. Den använder standard HTTP-huvuden i stället för mer komplicerade lösningar som förlitar sig på cookies, sessionsidentifierare och inloggningssidor. Det finns mycket lite säkerhet inbyggd i det grundläggande auth-systemet. Uppgifter överförs endast med Base64-kodning och är inte krypterade eller hashade. På grund av den inbyggda osäkerheten i systemet görs dessa förfrågningar oftast via HTTPS.

Autentiseringsinformationen ska sammanställas i ett följande format och inkluderas i rubriken:

Format:

<!--Authorization: Basic -->

Fullständiga detaljer om protokollet för grundläggande autentisering finns här: http://www.w3.org/Protocols/HTTP/1.0/spec.html#AA

Digest Auth

Digest Auth fungerar på samma sätt som grundläggande SSL-autentisering med undantaget att lösenordet krypteras med hjälp av en enkelriktad hash. Den använder MD5-kryptografisk hashning med en nonce (ett servergenererat värde som förhindrar replay-attacker).

Det typiska flödet av en Digest Auth-förfrågan är följande:

  1. En användare navigerar till en sida som kräver att användaren autentiseras.
  2. Servern svarar med ett 401-meddelande som visar att användaren för närvarande inte är behörig att få tillgång till innehållet. I svaret ingår också den nonce som kommer att användas under auktoriseringen för att förhindra replay-attacker,
  3. Sajten visar sedan ett autentiseringsgränssnitt för att samla in de uppgifter som krävs( användarnamn och lösenord )
  4. De tillhandahållna uppgifterna skickas på nytt till servern med en autentiseringshuvudrubrik som ingår i begäran och som har en svarskod.
  5. Servern kontrollerar sedan de tillhandahållna uppgifterna och accepterar autentiseringen eller returnerar ett 401-meddelande om uppgifterna är felaktiga, vilket leder till att användaren återigen uppmanas till autentiseringsgränssnittet.

Den fullständiga informationen om Digest Auth-protokollet finns här: https://www.ietf.org/rfc/rfc2617.txt

OAuth 1.0

OAuth 1.0-protokollet bygger på en delad hemlighet mellan server och webbplats. Denna delade hemlighet används för att generera en signatur som ingår i begäran. Den genererade signaturen används för att på serversidan verifiera att autentiseringsbegäran är giltig. Processen för att auktorisera användaren hanteras i allmänhet i tre steg (OAuth med tre ben):

  1. Stället erhåller begäranstoken.
  2. Användaren auktoriserar begäranstoken.
  3. Stället byter begäranstoken mot åtkomsttoken.

Processen för att slutföra en OAuth-förfrågan med tre ben hanteras i allmänhet på följande sätt:

  1. Sajten skickar en signerad begäran om Request token. Denna begäran ska innehålla följande parametrar:

    1. oauth_consumer_key
    2. oauth_timestamp
    3. oauth_nonce
    4. oauth_signature
    5. oauth_signature_method
    6. oauth_version
    7. .

    8. oauth_callback

Denna begäran kommer att valideras på servern och om den valideras returneras begäranstoken i följande format:

  1. oauth_token
  2. oauth_token_secret
  3. och eventuella andra ytterligare parametrar som returneras av din server.
  4. Nästa steg efter att ha hämtat begäranstoken är att uppmana användaren att ange sina inloggningsuppgifter. Dessa formateras sedan till en signatur med begäranstoken oauth_token och skickas med en begäran tillbaka till servern för validering. Vid en lyckad validering av denna begäran returnerar servern följande:
  5. oauth_token
  6. oauth_verifier

Dessa kommer att användas i nästa steg för att hämta en åtkomsttoken.

  1. Det sista steget är att utbyta de hämtade uppgifterna från steg 2 mot en åtkomsttoken som kommer att användas för att få tillgång till serverns resurser. För att byta ut din begäranstoken mot en åtkomsttoken, kan du göra en begäran till servern med följande signerade begäran
  2. oauth_token -återförd från steg 2
  3. oauth_consumer_key
  4. oauth_nonce
  5. oauth_signature
  6. oauth_signature_method
  7. oauth_version
  8. oauth_verifier -som returneras från steg 2

Detta ger dig en åtkomsttoken som du kan använda tillsammans med din hemlighet för att begära information från servern.

Du hittar fullständig information om OAuth 1.0-protokollet här: https://tools.ietf.org/html/rfc5849

OAuth 2.0

Detta liknar OAuth 1.0-protokollet, det bygger på ett klient-id och en hemlighet för att formatera begäran, men förenklar mycket av den komplicerade signeringsprocessen som är inneboende i OAuth 1.0-systemet. Processen för att auktorisera en användare med hjälp av det tredelade OAuth 2.0-protokollet är följande:

  1. Användaren hänvisas till tjänsten för auktorisering med följande uppgifter inkluderade i auktorisations-URL:n:

    1. client_id
    2. redirect_uri
    3. response_type
    4. scope
  2. Användaren autentiserar sig sedan hos tjänsten och ger programmet tillgång till sina uppgifter. Vid lyckad autentisering omdirigeras användaren tillbaka till redirect_uri med följande parametrar:

    1. code
    2. state
  3. Den kod som returneras i steg 2 används sedan av applikationen för att göra en begäran om en åtkomsttoken. I denna begäran bör följande ingå:

    1. client_id
    2. client_secret
    3. code
    4. redirect_uri
    5. grant_type – Detta bör ställas in på ”authorization_code”

Servern kommer att verifiera dessa uppgifter och sedan returnera en åtkomsttoken med en utgångstid om de är giltiga. Dessa returneras vanligtvis i följande format:

  1. access_token
  2. expires_in
  3. refresh_token

Du hittar fullständig information om OAuth 2.0-protokollet här: http://oauth.net/2/

Autentiseringsprotokoll gör det möjligt för dig att säkra dina data med olika säkerhetsnivåer. Beroende på vilka data som nås och vilken säkerhetsnivå du vill ha genom att implementera ett av ovanstående protokoll kan du vara säker på att dina data är säkra och endast nås av användare som har tillstånd att använda ditt system.