Veiligheid

OAuth-aanmeldingsbeheer

OAuth-aanmeldingsbeheer

Belangrijke dingen die u moet weten over OAuth

OAuth is iets dat elke ontwikkelaar moet weten. Als u een zelfstandige toepassing maakt of een toepassing van derden die integreert met een andere HTTP-service, moet u weten hoe OAuth werkt om uw gebruikers een gebruiksvriendelijke en goed geïntegreerde service te bieden.

Het idee is om clientapplicaties een beperkte toegang tot gebruikersinformatie te geven zonder ooit gebruikersreferenties of wachtwoord te delen. OAuth-framework is verantwoordelijk voor de uitwisselingen die nodig zijn voordat een toepassing uw informatie krijgt.

Stel dat u zich wilt aanmelden voor Dev.naar (wat een geweldige plek is voor ontwikkelaars om ideeën uit te wisselen) ze laten je je aanmelden met je GitHub-account. Hoe komt dat?? Hoe zouden ze weten dat jij de eigenaar bent van het GitHub-account waarmee je je aanmeldt??

Wat nog belangrijker is, hoe zorg je ervoor dat Dev.to overschrijdt zijn grenzen niet als het gaat om uw informatie die is opgeslagen met GitHub?

OAuth-deelnemers

We houden vast aan het voorbeeld van de GitHub-plug-in van de Atom-editor waarmee ontwikkelaars code rechtstreeks naar GitHub kunnen pushen met behulp van de Atom-interface. De reden hiervoor is bijvoorbeeld dat GitHub de details achter de schermen niet verbergt en je krijgt te zien wat er onder de motorkap gebeurt.

Voordat we ingaan op de details van de werking van OAuth. Laten we de toon zetten door alle deelnemers aan de uitwisseling te herkennen:

  1. Resource-eigenaar of -gebruiker: Deze gebruiker is degene wiens accountinformatie moet worden geopend (lezen en/of schrijven) om deze met een applicatie te laten werken.
  2. Cliënt: Dit is de applicatie die uw toestemming vraagt ​​om toegang te krijgen tot uw informatie van een andere service. In ons voorbeeld is de Atom-editor de client.
  3. Bron: Bron is uw werkelijke informatie op de servers op een afgelegen locatie. Dit is toegankelijk via een API als de klant de juiste machtigingen heeft gekregen.
  4. Autorisatieserver: Ook gekoppeld via een API. Deze server wordt onderhouden door de serviceprovider (GitHub in ons voorbeeld). Zowel de autorisatieserver als de bronserver worden de API genoemd omdat ze worden beheerd door één entiteit, in dit geval GitHub, en als een API worden blootgesteld aan de clientontwikkelaar.

OAuth-registratie

Het proces begint wanneer de Client-applicatie wordt ontwikkeld. U kunt naar de resourceprovider gaan en u aanmelden met hun ontwikkelaarsportal of het API-gedeelte van de website. U moet ook een callback-URL opgeven waarnaar de gebruiker wordt omgeleid na acceptatie of weigering om de app de nodige machtigingen te geven.

Als u bijvoorbeeld naar GitHub → Instellingen → Instellingen voor ontwikkelaars gaat en op “Registreer een nieuwe aanvraag”. Dit zou je een klant identificatie die openbaar kan worden gemaakt en een Klantgeheim die de ontwikkelaarsorganisatie ... nou ja, geheim moet houden.

Nadat de klant-ID en het geheim aan u, de ontwikkelaar, zijn verstrekt, moet bewaar ze veilig en beveiligd, aangezien ze niet opnieuw door de autorisatieserver worden getoond. Hetzelfde geldt voor alle andere tokens die zouden worden rondgegooid (later meer over tokens).

OAuth 2-werkstroom

U heeft uw aanvraag geregistreerd. Het is ontwikkeld en getest en nu zijn de gebruikers klaar om het te gebruiken. Een nieuwe gebruiker die zich bij uw service registreert, krijgt de optie "Aanmelden met GitHub" te zien. Dit is de eerste stap.

Stap 1: Autorisatieverzoek

Het autorisatieverzoek is het deel waar een nieuw venster (of een vergelijkbare prompt) wordt geopend met de webpagina van de bron en gebruikers vraagt ​​om in te loggen. Als je al bent ingelogd op dat apparaat, dan wordt deze stap overgeslagen en wordt je eenvoudig door GitHub gevraagd of je toegang wilt geven tot de Atom-client-app. Dit is veel transparanter in het geval van Atom omdat ze je vragen om handmatig naar de GitHub-website te gaan en hen de toestemming te geven.

Bij het bezoeken van de URL wordt u om toestemming gevraagd.

Let op de URL die aangeeft dat dit een beveiligde (HTTPS) webpagina is van GitHub.inclusief. Nu kunt u, de gebruiker, er zeker van zijn dat u rechtstreeks communiceert met GitHub. Atom wacht gewoon, nogal uit de weg.

In tegenstelling tot Atom laden de meeste client-apps automatisch de inlog- of machtigingspagina. Hoewel dit erg handig is, kan het ook worden misbruikt als de client-app besluit een phishing-link te openen. Om dit te voorkomen, moet u altijd de URL controleren waarnaar u wordt doorverwezen, en ervoor zorgen dat deze de juiste URL is en het HTTPS-protocol gebruikt.

Stap 2: De autorisatiebeurs verkrijgen

Om de Atom-client op de hoogte te stellen, krijgt u een token (een autorisatieverlening) die vervolgens wordt ingediend bij de Atom-client.

Zodra de gebruiker dit doet, is het werk van de gebruiker gedaan. (In feite is een typische gebruiker niet eens op de hoogte van de uitwisseling van autorisatieverlening). GitHub's voorbeeld is gekozen om te laten zien dat dit is wat er gebeurt).

Stap 3: Het toegangstoken verkrijgen

De autorisatieverlening is nog steeds niet de entiteit die de klant toegang geeft tot gebruikersinformatie. Dat wordt verkregen door iets te gebruiken dat een toegangstoken wordt genoemd. Welke de client-app in deze stap zal proberen te krijgen.

Om dit te doen, moet de client nu de autorisatie verlenen aan de autorisatieserver samen met een bewijs van zijn eigen identiteit. De identiteit wordt geverifieerd met behulp van de Client-ID en Client-geheim die eerder aan de client-app zijn gegeven.

De identiteitsverificatie wordt gedaan om ervoor te zorgen dat de gebruiker niet wordt misleid om een ​​snode app te gebruiken die zich voordoet als een legitieme app. Als iemand bijvoorbeeld besluit om het uitvoerbare bestand Atom te noemen met dezelfde naam, logo en functionaliteit, kan de gebruiker misleid worden om toegang te verlenen aan een client die uw informatie kan misbruiken. Ze kunnen snuffelen of zelfs handelen zonder uw toestemming. De autorisatieserver zorgt ervoor dat de client inderdaad is wat hij voor zijn gebruikers lijkt.

Zodra de identiteit is geverifieerd en de autorisatieverlening is geaccepteerd, gooit de autorisatieserver een token naar de client-app. Beschouw het token als een combinatie van zowel gebruikersnaam als wachtwoord die aan de bronserver kan worden gegeven om toegang te krijgen tot een bepaalde beschermde bron waartoe de eigenaar van de bron u toegang heeft verleend.

Ten slotte kan de app met dit token nu toegang krijgen tot de vereiste gebruikersinformatie en andere bronnen van de bronserver.

Merk op hoe in deze hele uitwisseling de daadwerkelijke gebruikersnaam en het wachtwoord nooit met de klant werden gedeeld? Dat is het mooie van OAuth. In plaats van gebruikersnaam en wachtwoord te geven die de app alle toegang tot de bron zouden geven, gebruikt het in plaats daarvan tokens. En een token kan slechts beperkte toegang krijgen tot de bron.

Machtigingen intrekken

Stel dat u de toegang verliest tot uw apparaat waarop de geautoriseerde client-app stond. U kunt inloggen op GitHub en naar Instellingen → Toepassingen → Geautoriseerde OAuth-apps gaan om de autorisatieverlening en toegangstoken in te trekken. Ik zal hetzelfde doen, omdat in de bovenstaande schermafbeeldingen de autorisatiebeurs openbaar werd getoond.

Nu je een overzicht hebt van hoe OAuth 2.U kunt hier meer lezen over de autorisatietoekenningen en andere fijnere details van het protocol en hoe de API-aanroepen worden gedaan.

Top 5 Game Capture-kaarten
We hebben allemaal gezien en genoten van streaming gameplays op YouTube. PewDiePie, Jakesepticye en Markiplier zijn slechts enkele van de beste gamers...
Hoe een spel op Linux te ontwikkelen
Tien jaar geleden zouden niet veel Linux-gebruikers voorspellen dat hun favoriete besturingssysteem ooit een populair spelplatform voor commerciële vi...
Open source-poorten van commerciële game-engines
Gratis, open source en platformonafhankelijke game-engine-recreaties kunnen worden gebruikt om zowel oude als enkele van de vrij recente gametitels te...