Både JWT og OAuth kan hjælpe dig med at forbedre sikkerheden i din webapplikation ved at tilbyde sikker godkendelse og godkendelse. Men hvilken skal du implementere for at give brugerne adgang til din webapplikation sikkert? Vi har udarbejdet en detaljeret artikel om JWT vs. OAuth for at besvare dette spørgsmål.
Efter at have læst det, vil du have en klar idé om, hvad JWT og OAuth er, hvilke fordele de tilbyder, hvordan de adskiller sig, og hvilken du skal implementere for at forbedre din webapplikationssikkerhed.
Uden videre, lad os dykke ind.
Indholdsfortegnelse
Hvad er en JWT?
JWT, som står for JSON Web Token, er en åben standard, der definerer en måde at sikkert dele information mellem to parter som et JSON-objekt. Da oplysningerne er digitalt signeret, kan parterne stole på og verificere oplysninger, der overføres via JSON Web Tokens.
En relativt lille størrelse af JWT’er gør det muligt at sende dem gennem en POST-parameter, en URL eller inde i en HTTP-header. Et JSON Web Token har tre dele: Header, nyttelast og signatur.
Headeren fortæller, hvilken type token det er, og hvilken type signeringsalgoritme der bruges. Payload-delen af en JWT inkluderer påstande, der er udsagn om brugere og yderligere data.
Som navnet antyder, har signaturdelen af et JSON Web Token signaturen til at bekræfte, at meddelelsen ikke blev tempereret undervejs.
Sådan fungerer JWT’er
Billedkilde: DEV
Det følgende er, hvordan et JSON Web Token fungerer.
Bruger login
Brugere logger ind på din webapplikation ved at indsende deres brugernavne og adgangskoder. Derefter overfører din applikation disse login-legitimationsoplysninger til godkendelsesserveren.
Token Generation
Efter godkendelsesserveren har bekræftet brugernes loginoplysninger, genererer den JSON Web Tokens og sender dem til brugerne. Disse JWT’er kan indeholde kritiske oplysninger om brugere og godkendelsessessioner. Brugere gemmer disse JWT’er lokalt. Baseret på indstillingerne kan serveren også signere JWT’er ved hjælp af en delt hemmelig eller privat nøgle for at øge sikkerheden.
Tokenbekræftelse
Når brugere sender anmodninger til din applikationsserver om at få adgang til en ressource, vil de inkludere deres JWT’er i deres serveranmodninger. Din applikationsserver vil verificere signaturer i JWT’er og kontrollere påstandene i nyttelaster for at verificere, om brugere har tilladelse til at få adgang til de anmodede ressourcer.
Hvis JWT’erne er gyldige, vil brugerne få adgang til de anmodede ressourcer på din webapplikation.
Use Cases af JWT’er
Man kan bruge JSON Web Tokens på følgende måder:
#1. Bemyndigelse
Når brugerne har logget ind på din webapplikation via login-slutpunktet, vil godkendelsesserveren udstede JWT’er til dem. Brugerne vil bruge deres JWT’er til at få adgang til ressourcer i applikationen, som kræver godkendelse for at bevise deres identitet.
Informationsudveksling mellem parter
JSON Web Token kan være den rigtige mulighed for sikker overførsel af information til gyldige brugere. JSON Web Tokens er signeret for at sikre, at oplysningerne kommer fra den originale kilde. Strukturen af JWT (signaturdelen) gør det også muligt for modtagere at verificere, at oplysningerne ikke er justeret undervejs.
Fordele ved JWT’er
Følgende er de vigtigste fordele ved at implementere JWT’er i din webapplikation.
- I modsætning til SAML-tokens er JWT’er lette. Så du kan hurtigt implementere dem i HTML- og HTPP-miljøer, hvilket gør JWT’er ideelle til klientapplikationer som mobilapplikationer.
- JWT’er tilbyder robust sikkerhed. Du kan signere JWT’er symmetrisk med en delt hemmelighed ved hjælp af HMAC-algoritmen eller en privat nøgle til at signere dem asymmetrisk.
- JWT’er kommer med en indbygget udløbsmekanisme, så du kan indstille udløbsperioden for JWT’er for at øge sikkerheden.
- JSON Web Tokens er bredt brugt af forskellige Single Sign-On-løsninger. Som følge heraf er det nemt at arbejde med JWT.
Desuden kan JWT’er spare databaselagerplads i din virksomhed. Dette skyldes, at din server kun opretter JWT’er, og de gemmes på klientens side. JWT’er kræver heller ikke et databaseopslag.
Så JWT’er kan verificeres hurtigt, hvilket giver en overlegen brugeroplevelse.
Begrænsninger af JWT’er
Selvom JWT’er er en glimrende måde at autorisere brugere. De har visse begrænsninger, såsom:
- Du er ansvarlig for at sikre sikkerheden af krypteringsnøglen. Hvis en hacker får fingrene i nøglen, der signerer dine JWT’er, er du i store problemer. De kunne lave falske tokens, der roder med dine brugerdata. Det er en stor sikkerhedsrisiko.
- JWT’er behøver ikke et databasekald for hver kontrol, hvilket lyder godt. Men hvis du har brug for at tilbagekalde en ASAP, bliver du nødt til at sortliste den. Det er ikke en hurtig eller enkel opgave.
- Når en JWT udløber, er det ikke kun et spørgsmål om at forlænge timeren. Dit system vil bede brugeren om at logge ind igen for at få et nyt token. Dette tilføjer kompleksitet til hele processen, hvilket kræver mere omtanke om brugeroplevelse og sikkerhedsflows. For at gøre processen nemmere kan du implementere opdateringstokens i kombination med JWT’er. Når adgangstokenet udløber, kan klienter bruge disse opdateringstokens til at anmode om nye adgangstokens, uden at klienten skal indsende login-legitimationsoplysninger igen.
- Implementering af JWT’er i din webapplikation er ikke en simpel opgave; det kræver ekstra ingeniørarbejde. Du skal konfigurere token-oprettelsesprocessen, vælge den rigtige signeringsmekanisme, der passer til din applikation og integrere det hele med din eksisterende arkitektur.
JWT’er er ikke en et-trins løsning, men snarere et projekt, der kræver omhyggelig planlægning og udførelse.
Hvad er OAuth?
OAuth, forkortelse for åben autorisation, er en åben standard autorisationsprotokol til autorisation. Det giver webapplikationer eller websteder mulighed for at få adgang til ressourcer, der hostes af tredjepartsapplikationer på vegne af brugere, uden at brugere deler loginoplysninger til tredjepartsapplikationer.
Nu, skrevet som OAuth 2.0 (den seneste version af OAuth), bruges den i vid udstrækning til at godkende brugere via en godkendelsesserver.
For eksempel, med OAuth på plads, kan brugere logge ind på din applikation med deres Facebook- eller Google-konti. Men de vil kun indtaste deres loginoplysninger på Facebook- eller Google-konti.
Sådan fungerer OAuth
Billedkilde: Zoho
For eksempel har du en tidsstyringsapp. Og for at give alle mulighed for at bruge din app effektivt, skal du have adgang til deres e-mail-indbakker. I tidligere dage skulle brugere dele deres loginoplysninger med din app for at give appen adgang til deres indbakker. OAuth2.0 har løst dette problem.
Sådan ser OAuth2.0-arbejdsgangen ud:
Nu kan din tidsstyringsapp få adgang til brugerens indbakke. Som Oauth har forskellige tilskudstyperkan autorisationsstrømmen afvige lidt afhængigt af autorisationsbevillingstyperne.
Fordele ved OAuth
Følgende er de vigtigste fordele ved at bruge OAuth.
- OAuth er en almindeligt accepteret standard. Det betyder, at alle førende godkendelsestjenester forstår og bruger OAuth.
- Brugere vil finde mange OAuth plug-ins og funktioner at vælge imellem, takket være dens udbredte brug og kompatibilitet.
- OAuth tilbyder testede klientbiblioteker til næsten alle programmeringssprog og web-frameworks. Så du kan bruge dit foretrukne sprog med OAuth.
- OAuth er meget sikker og velovervejet. Fordi det er så udbredt, har eksperter allerede overvejet alle mulige sikkerhedsrisici.
- OAuth er fantastisk til kodeafkobling. Din hovedapplikationskode bliver ikke rodet, når du håndterer godkendelsesopgaver. Dette gør det nemmere at administrere og opdatere din app i det lange løb.
Brugstilfælde af OAuth
Følgende er nogle populære eksempler på brug af OAuth:
- Den mest almindelige brug af OAuth 2.0 er at lave tredjepartsapplikationer til at få adgang til brugernes konti. Med OAuth 2.0 kan brugere give tredjeparter tilladelse til at få adgang til deres data gemt i forskellige tjenester uden at give tredjeparter loginoplysningerne til disse tjenester.
- Som ejer af webapplikationer kan du bruge OAuth 2.0 til at implementere Single Sign-on. Du kan udforske disse open source OAuth-løsninger til dit projekt.
- Du kan implementere OAuth 2.0 i din API-gateway for at få API-gatewayen til at fungere som en godkendelsesserver. Dette vil sikre, at API-gatewayen videresender anmodninger fra klienter med gyldige adgangstokens.
- OAuth 2.0 kan give IoT og smarte enheder som køleskabe eller tv’er mulighed for at interagere med tredjeparts API’er på vegne af brugere. Dette er praktisk, når en bruger vil logge ind på en app på gadgets uden et almindeligt tastatur, såsom et smart-tv eller spillekonsol.
Begrænsninger af OAuth
Rækken af tilgængelige flows kan være skræmmende for dem, der er nye til OAuth. Det handler ikke kun om at vælge en; nogle gange har du brug for en kombination for at opfylde alle dine sikkerhedskrav. Denne kompleksitet kan gøre det svært for begyndere at vide, hvor man skal starte, hvad man skal bruge, og hvordan man integrerer det effektivt.
Hvert flow tjener et unikt formål, hvad enten det er til mobilapps, server-til-server-kommunikation eller webapplikationer. Så det er vigtigt at omhyggeligt analysere dine specifikke behov, før du træffer et valg.
OAuth 2.0 afhænger af SSL/TLS for at holde tingene sikre. Hvis SSL/TLS ikke er konfigureret rigtigt, kan OAuth 2.0’s sikkerhed være i fare.
OAuth kan også rejse privatlivsproblemer, især ved sporing af brugeraktivitet. Når du bruger en tjeneste som “Log ind med Google”, kan Google blive opmærksom på din aktivitet på det pågældende tredjepartswebsted. Ikke alene kan Google vide, at du er logget ind, men det kan også spore, hvor ofte og hvornår du interagerer med det pågældende websted.
Desuden kunne OAuth være overkill for enklere opsætninger, som en app med kun en frontend og en backend. Du behøver muligvis ikke dens kompleksitet i sådanne tilfælde.
Forskellen mellem JWT’er og OAuth
JWT’er og OAuth tjener den afgørende funktion at verificere brugerens identitet for at autorisere adgang til ressourcer. De er væsentlige værktøjer i sikkerhedslandskabet, men adskiller sig i omfang, kompleksitet og anvendelse.
FunktionerJWTsOAuthHovedbrugJWT’er fokuserer hovedsageligt på API’er.OAuth dækker web, browser, API og andre apps.Token vs. ProtocolJWT’er er et tokenformat.OAuth er en godkendelsesprotokol.StorageJWT’er er kun afhængige af klientsidelagring.OAuth bruger både klientside og server-side storage.Fleksibilitet JWT’er er mere begrænset i omfang.OAuth tilbyder mere fleksibilitet og en bredere vifte af use cases. BrugervenlighedJWT’er er enklere og nemmere at forstå. OAuth er mere kompleks.
Mens JWT’er er mere ligetil og gearet til API-sikkerhed, leverer OAuth en omfattende godkendelsesmekanismeløsning, der kan tilpasse sig forskellige scenarier.
Og OAuth kan gøre det muligt for brugere at lade en tredjepartsapp få adgang til deres data på en anden platform uden at afsløre deres loginoplysninger.
Hvorvidt man er bedre afhænger af de specifikke behov for det pågældende system eller netværk.
Kan du bruge JWT og OAuth sammen?
Selvom JWT’er og OAuth tjener forskellige formål, kan du kombinere dem sammen.
OAuth-protokollen specificerer ikke noget tokenformat, der skal bruges strengt. Så du kan implementere JWT’er i OAuth.
For eksempel kan OAuth2-godkendelsesserveren udstede et adgangstoken med JWT’er. Og denne JWT kunne inkludere yderligere information i nyttelasten, hvilket forbedrer ydeevnen. Dette skyldes, at der vil være færre rundrejser mellem godkendelses- og ressourceserverne.
Kombination af JWT’er og OAuth2 kan også ske gennem en dual-token-tilgang – OAuth2 udsteder to separate tokens i denne metode: et access_token og et JWT. JWT indeholder yderligere identitetsoplysninger. Denne tilgang giver et ekstra lag af detaljer, hvilket giver dig mere kontrol over brugeradgang og data.
Det er afgørende at bruge OpenID Connect, når du vælger denne dual-token-strategi. OpenID Connect bygger på OAuth2 og tilføjer mere standardiserede felter til tokens.
Brug af JWT’er i stedet for OAuth2 kan gøre tingene hurtigere og mindre komplekse til specifikke opgaver. Men det kan også gøre udviklingen mere udfordrende.
Når du beslutter dig for at bruge JWT med OAuth2, skal du overveje, om hastighedsboostet retfærdiggør det ekstra arbejde i udviklingen.
Konklusion
I kampen mellem JWT vs. OAuth om ultimativ websikkerhed har hver deres fordele og ulemper. JWT skinner for statsløs, hurtig godkendelse, men har begrænsninger som mangel på indbygget tilbagekaldelse. OAuth udmærker sig i komplekse autorisationsscenarier, men kan være overkill til mere ligetil projekter.
Hvis du har brug for robust autorisation og effektiv godkendelse, kan du overveje at kombinere JWT og OAuth gennem OpenID Connect.
Dit valg bør afhænge af dine specifikke projektbehov, ikke kun hypen omkring disse teknologier.
Derudover kan du udforske disse populære brugergodkendelsesplatforme for at vælge den bedste løsning til din applikation.