SMS to-faktor godkendelse med GatewayAPI
I denne guide til udviklere viser vi dig trin for trin, hvor let det er at oprette SMS to-faktor godkendelse med GatewayAPI. Hvis du ikke allerede er bruger, kan du nemt tilmelde dig gratis her!
En måde at gøre din godkendelsesproces mere sikker er ved at tilføje flere godkendelsestrin. En metode, der er meget brugt på grund af dets bekvemmelighed, er engangs-SMS-koder. Dette sendes til kontoejernes telefonnumre, når en gyldig adgangskode er indtastet. Dette kendes også som SMS to-faktor godkendelse, en SMS-adgangskode eller en OneCode og kan blandt andet leveres af Authy eller lignende tjenester.
Ved hjælp af GatewayAPI og et par kodebiblioteker er det rimeligt ligetil at implementere. Vi vil i denne guide vise dig præcist, hvordan du sætter det op selv.
Oprettelse af forbindelse til API’et
Før vi kan begynde at godkende kontoejere ved hjælp af en to-faktorproces, skal vi først have på plads, hvordan vi gerne vil sende en SMS ved hjælp af GatewayAPI.
Vi anvender her Python til kodeeksemplerne. For Ruby og PHP-udviklere har vi også eksempler i vores dokumentation til brug af GatewayAPI med disse og mange andre sprog.
GatewayAPI tilbyder flere forskellige måder at udføre en godkendelsesproces. Vi vil fokusere på at bruge OAuth1, da det er både understøttet og ligetil.
Gå til dit dashboard, og vælg indstillinger i sidebjælken -> OAuth-key. Der skulle gerne allerede eksistere et nøglesæt med en etiket, der indikerer, at det blev oprettet af systemet. Klik på nøgleknappen til højre, så får du din nøgle og secret. Dette er, hvad du skal bruge til at udføre en godkendelse via API’et.
Det burde nu være ligetil at afsende en SMS. Ved hjælp af Python kan det gøres således:
Installer afhængigheder med: pip install requests_oauthlib
Du kan finde eksempler på, hvordan du sender en SMS på øvrige sprog i vores dokumentation.
Opsætning af SMS to-faktor godkendelse
Nu ved vi, hvordan vi sender en tekst, og vi kan derfor gå videre til næste trin.
To-faktorprocessen indeholder to trin: Den første er godkendelse med et brugernavn og en adgangskode, og hvis det lykkes, er det andet trin godkendelse med en engangskode, der sendes til dig som en SMS ved hjælp af GatewayAPIs Rest API.
Da det er en to-faktorproces, har vi brug for at kunne gemme data mellem de to trin. Til dette vil vi bruge en Redis-server, men det kan også være et session object, en MySQL-database eller en hvilken som helst anden metode til at gemme oplysninger mellem de to trin.
Vi bruger også PyOTP, som er et bibliotek, der blandt andet gør det nemt at oprette engangskoder. For Ruby-udviklere er der et bibliotek svarende til PyOTP kaldet ROTP. For PHP-udviklere er der OTPHP.
Hvad er de næste trin?
Trin 1
Vi opretter først en AuthClient, som skal udføre alt det tunge arbejde.
Vi bruger også en tæller i vores Redis-database, der øges for hvert godkendelsesforsøg for den pågældende bruger. Dette antal seedes til vores PyOTP-instans for at sikre, at det er unikt. Vi erhverver derefter en ny kode fra PyOTP. Dette bruger vi til at godkende SMS-koden i andet trin.
Vi sender derefter SMS-koden til brugernes telefonnummer ved hjælp af en funktion, der næsten er identisk med vores tidligere SMS-afsendelseseksempel. Endelig returnerer vi ID’et for den bruger, der matchede brugernavnet og adgangskoden.
Sikkerhed frem for alt
Vi gemmer en tilfældig secret for hver bruger efter behov i Redis, men du kan generere og gemme denne secret på enhver måde, du ønsker. Bare sørg for, at den er sikker. Læs mere om håndtering af secrets her.
Trin to
Trin to er endnu mere enkelt. Vi leverer det erhvervede bruger-id, der blev returneret fra trin ét, og den SMS-kode, der blev sendt til brugernes telefonnumre. Vi kan derefter kigge på den aktuelle tæller i Redis og sørge for, at SMS-koden stemmer overens.
Ved at bruge alt dette, kunne vores flow se således ud i trin et:
Og således for trin to:
Hvis godkendelsen gennemføres, blev brugeren godkendt ved hjælp af en to-faktorproces, og der blev opnået et godkendelses-token.
Eksemplet er lavet med henblik på at fremvise teknikken via GatewayAPI, og hvordan man bruger engangskodeord.
I et produktionsmiljø bør der også anvendes moderne sikkerhedsforanstaltninger, såsom forebyggelse af brute force samt kryptering af alle følsomme data. Se RFC4226s forslag samt, hvad du skal være forsigtig med, når du anvender PyOTP eller lignende biblioteker og teknikker.
Der er mange muligheder, når du inkluderer SMS i dine applikationer. SMS to-faktor godkendelse bestående af en adgangskode og en SMS-kode er blot en af dem.
Global SMS Gateway
GatewayAPI har nogle af de laveste priser i størstedelen af verden kombineret med en intuitiv brugergrænseflade, support i verdensklasse og en solid oppetid på over 99,99 % i gennemsnit. Hvis du ikke har en konto endnu, kan du oprette en gratis konto på mindre end to minutter her: Gå til GatewayAPI eller skriv til sales@gatewayapi.com.