Wat is OAuth?
- IAM-woordenlijst
- Wat is OAuth?
OAuth, oftewel Open Authorization, is een open standaard waarmee gebruikers toegang kunnen verlenen aan externe applicaties tot hun bronnen, zonder dat ze daarbij hun aanmeldingsgegevens hoeven te delen. In plaats van dat gebruikers hun wachtwoorden vrijgeven, machtigt OAuth externe apps met tijdelijke toegangstokens om namens de gebruiker toegang te verlenen.
Stel bijvoorbeeld dat u een externe app gebruikt zoals Mailchimp, een populaire e-mailmarketingtool, en dat u uw Google-contacten wilt importeren om een e-maillijst op te bouwen. In plaats van elk contact handmatig te downloaden en te uploaden naar Mailchimp, kunt u met OAuth uw Google-account veilig verbinden met Mailchimp. Zo krijgt u beperkte toegang tot uw contacten zonder uw wachtwoord vrij te geven.
OAuth versus OAuth 2.0: wat is het verschil?
OAuth, of OAuth 1.0, vereist dat elk autorisatieverzoek wordt ondertekend met een cryptografische handtekening. Dit betekent dat de externe app het verzoek moet ondertekenen met een gedeelde geheime sleutel, die de autorisatieserver moet repliceren om het verzoek te verifiëren. Hoewel cryptografische handtekeningen ervoor zorgen dat het verzoek niet gewijzigd is, versleutelen ze de gegevens niet, zodat ze tijdens het verzenden kunnen worden onderschept of gestolen.
OAuth 2.0 vereenvoudigt het autorisatieproces door cryptografische handtekeningen te vervangen door HTTPS-encryptie, wat zorgt voor een veilige end-to-end gegevensoverdracht. OAuth 2.0 gebruikt tijdelijke toegangstokens en vernieuwingstokens om de beveiliging te verbeteren door de blootstelling aan tokens te minimaliseren. Het biedt ook meer flexibiliteit door verschillende autorisatiestromen te ondersteunen op basis van het type applicatie, zoals webapps, mobiele apps en server-naar-servercommunicatie.
| Kenmerk | OAuth 1.0 | OAuth 2.0 |
|---|---|---|
| Beveiliging | Gebruikt cryptografische handtekeningen met een gedeelde geheime sleutel voor elk verzoek. Voorkomt manipulatie, maar niet onderschepping. | Maakt gebruik van HTTPS/TLS-versleuteling voor veilige end-to-end gegevensoverdracht |
| Tokensysteem | Eén type token zonder standaard vervaldatum | Gebruikt toegangstokens met een korte levensduur en vernieuwingstokens voor betere beveiliging |
| Verificatie aanvragen | Zowel de app als de server moeten overeenkomende handtekeningen genereren om verzoeken te verifiëren | TLS verzorgt de versleuteling en verificatie van verzoeken |
| Autorisatiestromen | Eén stroom voor alle gebruikssituaties | Meerdere stromen die verschillende applicatietypes ondersteunen (web, mobiel, server-to-server) |
| Implementatiecomplexiteit | Complex vanwege de vereisten voor cryptografische handtekeningen | Eenvoudigere implementatie dankzij de afhankelijkheid van HTTPS |
| Modern gebruik | Minder gebruikelijk in moderne applicaties | Industriestandaard voor moderne toepassingen |
| Beveiligingsafweging | Extra beveiligingslaag voor handtekeningen, maar complexer | Vertrouwt op TLS-beveiliging, maar is eenvoudiger correct te implementeren |
| Aanbevolen voor | Verouderde systemen die handtekeningverificatie vereisen | De meeste moderne applicaties en API's |
Hoewel zowel OAuth als OAuth 2.0 praktische opties zijn, wordt OAuth 2.0 aanbevolen omdat het gemakkelijker te implementeren is en vaker gebruikt wordt in moderne applicaties.
Zo werkt OAuth
Dit is een stapsgewijze gids over hoe OAuth 2.0 werkt met de stroom voor het verlenen van autorisatiecodes:
- De gebruiker start de autorisatie: Een gebruiker wil een applicatie van een derde partij (de client) toegang geven tot hun bronnen die op een server worden gehost. Dit begint meestal wanneer de gebruiker in de applicatie van de client klikt op een knop zoals "Aanmelden met Google" of "Verbinden met GitHub".
-
De client verzoekt om autorisatie:
De client leidt de gebruiker om naar het autorisatie-eindpunt van de autorisatieserver. Het verzoek bevat parameters zoals:
client_id,redirect_uri,response_type=code,scopeenstate(voor CSRF-bescherming). De gebruiker kan dan worden gevraagd om zich te authentiseren (als deze nog niet is aangemeld) en de gevraagde toegang goed te keuren of te weigeren. -
Autorisatie wordt verleend: Als de gebruiker het verzoek goedkeurt, leidt de autorisatieserver de browser van de gebruiker terug naar de
redirect_urivan de client. Er wordt een autorisatiecode in de URL opgenomen met destate-parameter, die de klant moet verifiëren om te garanderen dat het verzoek niet is gemanipuleerd of onderschept. -
De client verzoekt om een toegangstoken:
De client stuurt een verzoek naar het tokeneindpunt om de autorisatiecode in te wisselen voor tokens. Dit verzoek moet het volgende bevatten:
authorization_code,client_id,client_secret(indien van toepassing),redirect_uri(moet overeenkomen met het oorspronkelijke verzoek) engrant_type=authorization_code. - De client ontvangt toegangstokens en vernieuwingstokens: Als het verzoek is gevalideerd, geeft de autorisatieserver een toegangstoken uit om API-verzoeken te authenticeren en een vernieuwingstoken om nieuwe toegangstokens te verkrijgen wanneer de huidige verloopt. De client slaat deze tokens veilig op en gebruikt het toegangstoken in API-verzoeken.
-
De client gebruikt vernieuwingtokens:
Wanneer het toegangstoken verloopt, kan de client een nieuwe aanvragen door een verzoek om een vernieuwingstoken naar het eindpunt te sturen. Om een nieuw toegangstoken te verkrijgen, moet de client een nieuw verzoek naar het eindpunt van het token sturen met de volgende criteria:
client_id,client_secret,refresh_tokenengrant_type=refresh_token.
Voordelen van OAuth
Het gebruik van OAuth biedt verschillende voordelen, zoals het verminderen van het risico op diefstal van aanmeldingsgegevens, het verbeteren van de gebruikerservaring en het mogelijk maken van eenmalig aanmelden (SSO).
Vermindert het risico op diefstal of misbruik van aanmeldingsgegevens
OAuth elimineert de noodzaak voor gebruikers om hun aanmeldingsgegevens rechtstreeks te delen met externe applicaties. In plaats daarvan vertrouwt het op een autorisatieserver om de toegang te beheren, waardoor het risico van blootstelling aan aanmeldingsgegevens aanzienlijk wordt verminderd, vooral in het geval van een datalek. OAuth 2.0 maakt gebruik van tijdelijke toegangstokens die gedurende een bepaalde tijd beperkte toegang tot bronnen verlenen. Deze tokens kunnen op elk moment door de gebruiker worden ingetrokken, zodat de toegang tijdelijk blijft en onder de controle van de gebruiker blijft.
Verbetert de gebruikerservaring
OAuth zorgt voor een betere gebruikerservaring door mensen toegang te geven tot meerdere accounts en bronnen met hun bestaande accounts, zodat ze niet voor elke service aparte gebruikersnamen en wachtwoorden hoeven te maken. Dit versnelt de toegang en vermindert de moeite van het beheren van meerdere sets van aanmeldingsgegevens.
Maakt eenmalige aanmelding mogelijk
OAuth maakt SSO mogelijk door ervoor te zorgen dat gebruikers zich één keer kunnen aanmelden bij een vertrouwde serviceprovider en vervolgens meerdere apps kunnen gebruiken, zonder dat ze opnieuw hun aanmeldingsgegevens hoeven in te voeren. Zolang de gebruiker aangemeld blijft bij de provider, kan deze naadloos andere apps gebruiken die met hetzelfde account verbonden zijn. Een gebruiker die is aangemeld bij Google, heeft bijvoorbeeld ook toegang tot apps die voor authenticatie afhankelijk zijn van Google.
Nadelen van OAuth
OAuth kent ondanks zijn voordelen enkele veiligheidsrisico's, waaronder de mogelijkheid dat tokens gecompromitteerd kunnen worden als ze niet veilig worden opgeslagen of verzonden en dat gebruikers nog steeds kwetsbaar kunnen zijn voor phishingaanvallen.
Tokens kunnen gecompromitteerd worden als ze niet veilig worden opgeslagen
Toegangstokens en vernieuwingstokens zijn waardevolle doelwitten voor cybercriminelen, aangezien ze directe toegang bieden tot gebruikersgegevens en -bronnen. Als tokens verkeerd worden opgeslagen, kunnen bedreigers ze compromitteren, wat kan leiden tot onbevoegde toegang en gecompromitteerde accounts.
Tokens kunnen gecompromitteerd worden als ze niet veilig worden verzonden
Als tokens over een onbeveiligde verbinding worden verzonden, zoals met HTTP in plaats van HTTPS, kunnen ze worden onderschept door een Man-in-the-Middle (MITM)-aanval. Als een token eenmaal gecompromitteerd is, kan het gebruikt worden om onbevoegde toegang te krijgen tot de bronnen van een gebruiker.
Vatbaar voor phishing-aanvallen
OAuth vertrouwt op het omleiden van gebruikers naar een autorisatieserver om rechten toe te kennen, maar dit proces kan worden misbruikt bij phishing-aanvallen. Bij een phishing-aanval verleidt een aanvaller gebruikers om aanmeldingsgegevens in te voeren op een valse aanmeldingspagina die zich voordoet als de legitieme autorisatieserver. Als gebruikers het verschil niet opmerken, kunnen ze onbewust hun aanmeldingsgegevens invoeren, waardoor aanvallers toegang krijgen tot accounts en gevoelige gegevens.