Magic link-authenticatie
Leer hoe je magic links implementeert voor wachtwoordloze aanmeldingen, registratie alleen op uitnodiging en uitnodigingen voor organisatieleden met behulp van eenmalige tokens.
Wat is een magic link?
Een magic link is een wachtwoordloze authenticatiemethode waarbij een gebruiker een eenmalige inlog-URL ontvangt via e-mail (of SMS). Door op de link te klikken logt de gebruiker in zonder een wachtwoord nodig te hebben.
Hier zijn enkele belangrijke beveiligingskenmerken van magic links:
- Eenmalig token: Zodra erop is geklikt, wordt het token ongeldig om misbruik te voorkomen.
- Linkverval: De magic link moet een korte vervaltijd hebben (bijv. 10 minuten) voor extra beveiliging.
- Rate limiting: Voorkom misbruik door het aantal te versturen magic links binnen een specifieke tijdslimiet te beperken.
- Apparaat/browser binding (Optioneel): Beperk het gebruik van de link tot het oorspronkelijke apparaat of IP om onderschepping te voorkomen.
Samenstelling van een magic link
Een magic link bestaat uit:
- De URL-route: Verwijst naar de bestemmingspagina van je app.
- Eenmalig token: Een uniek en eenmalig te gebruiken token voor wachtwoordloze authenticatie.
- Gebruikerse-mail: Wordt gebruikt om de authenticiteit van het token en de identiteit van de gebruiker te verifiëren.
- Aanvullende parameters: Optioneel, afhankelijk van de behoeften van je app.
Een magic link kan er bijvoorbeeld zo uitzien:
Om een magic link te maken, moet je een eenmalig token genereren, deze veilig naar de gebruiker verzenden en vervolgens valideren wanneer de gebruiker op de link klikt.
Workflow van een magic link
- Gebruiker vraagt een magic link aan: De gebruiker voert zijn e-mail in op jouw app.
- Generatie van eenmalig token: De server genereert een token en verzendt het als een link via e-mail.
- Gebruiker klikt op de link: De gebruiker klikt op de link in de e-mail.
- Tokenvalidatie: De server controleert of het token geldig is.
- Gebruiker is geauthenticeerd: Als het token geldig is, wordt de gebruiker ingelogd.
Hoe implementeer je magic links met Logto?
Stap 1: Vraag eenmalig token aan
Gebruik Logto Management API om een eenmalig token te maken.
Voorbeeld van de payload van het aanvraaglichaam:
Stap 2: Stel je magic link samen
Nadat je het eenmalige token hebt verkregen, kun je een magic link samenstellen en naar het e-mailadres van de eindgebruiker sturen. De magic link moet ten minste het token en het e-mailadres van de gebruiker als parameters bevatten en moet naar een bestemmingspagina in je eigen applicatie navigeren, bijvoorbeeld https://yourapp.com/landing-page
.
Hier is een eenvoudig voorbeeld van hoe de magic link eruit zou kunnen zien:
Opmerking:
De parameternamen in de magic link kunnen volledig worden aangepast. Je kunt extra informatie aan de magic link toevoegen op basis van de vereisten van je applicatie en alle URL-parameters coderen.
Stap 3: Start de authenticatiestroom via Logto SDK
Nadat de eindgebruiker de magic link heeft aangeklikt en naar je applicatie is genavigeerd, kun je de token
en email
parameters uit de URL extraheren en vervolgens de signIn()
functie van Logto SDK aanroepen om de auth-stroom te starten.
Voor meer details, bekijk de Logto Docs - Magic Link (Eenmalig Token).
Gebruikscasussen voor magic links
Magic links kunnen de eerste factor authenticatiestap vervangen, maar kunnen Multi-Factor Authentication (MFA) niet omzeilen.
In Logto, wanneer je een magic link genereert met een eenmalig token, hoef je niet te specificeren of het voor aanmelding of inschrijving is. Wij bepalen de stroom automatisch op basis van de registratie status van de e-mail:
- Niet-geregistreerd e-mailadres: Door op de magic link te klikken worden gebruikers doorgestuurd naar de account aanmaakstroom, waarbij e-mailinvoer en -verificatie worden overgeslagen. Gebruikers gaan verder met het instellen van een wachtwoord, toevoegen van profielgegevens (bijv. volledige naam) of instellen van MFA, op basis van je aanmeldinstellingen.
- Geregistreerd e-mailadres: Door op de magic link te klikken worden het eerste verificatiestap-punt omzeild (bijv. “e-mail + wachtwoord” of “e-mail + verificatiecode”). De gebruiker is rechtstreeks ingelogd of krijgt de MFA-prompt, afhankelijk van je aanmeldinstellingen.
Logto ondersteunt de volgende scenario's met magic links:
- Registratie alleen op uitnodiging: Voor interne tools of AI-producten in de testfase kun je openbare registratie uitschakelen en specifieke gebruikers uitnodigen via een magic link.
- Uitnodiging voor organisatieleden: Voor SaaS-producten, gebruik magic links om nieuwe leden uit te nodigen voor een organisatie, zodat het lidmaatschapsproces gemakkelijker wordt.
- Aanmelding / Inschrijving: Stuur een magic link voor aanmelding of inschrijving via e-mail.
Niet ondersteund op dit moment:
- Wachtwoord resetten met magic link.
- Gebruik van telefoonnummer of gebruikersnaam als identificator.
Laat ons weten of je verdere aanpassingen nodig hebt.
Registratie alleen op uitnodiging met magic link
Voor nieuwe producten (bijv. AI-tools) in interne testing of voor interne tools, wil je mogelijk openbare registratie uitschakelen en alleen specifieke gebruikers toestaan toegang te krijgen tot je app. Om dit te implementeren met Logto:
-
Ga naar Console > Inlogervaring > Inloggen en inschrijven > Geavanceerde opties, en schakel "Gebruikersregistratie inschakelen" uit om openbare registratie te sluiten.
-
Verzamel de e-mailadressen van de gebruikers die je wilt uitnodigen (bijvoorbeeld via je website of aanbevelingen van bestaande gebruikers).
-
Maak en verstuur de magic uitnodigingslink zoals hierboven beschreven (vraag het eenmalige token aan, stel de magic link samen, start authenticatie via Logto SDK).
Opmerking: Stel een vervaltijd in voor de uitnodigingslink. Het is aanbevolen om de link voor minstens één dag geldig te maken. Gebruik de volgende request body om het eenmalige token te genereren:
-
Verstuur de magic link naar het e-mailadres van de gebruiker (bijv.
https://yourapp.com/landing-page?type=registrationInvitation&token=YHwbXSXxQfL02IoxFqr1hGvkB13uTqcd&[email protected]
). Pas de e-mailsjabloon aan, zoals:Wanneer gebruikers klikken op "Accepteer de uitnodiging", registreren ze automatisch voor jouw dienst, zelfs met openbare registratie uitgeschakeld. Dit wordt "Gerichte gebruikersuitnodiging" genoemd.
Uitnodiging van organisatieleden met magic link
Voor multi-tenant producten (bijv. SaaS-apps zoals Slack, GitHub, Vercel), biedt een naadloos ledenuitnodigingsproces om organisatieleden te beheren. Gebruik magic links voor hogere conversieratio's bij ledenuitnodigingen.
-
Volg de Logto Docs om organisatiecreatie, organisatie op rollen gebaseerde toegangscontrole en organisatiebeheer te implementeren: Logto Organisaties.
-
Stel de "Leden uitnodigen" workflow in jouw product in. Voorbeeld:
-
Volg deze handleiding om Organisatieleden uit te nodigen. Opmerking: Wanneer je leden uitnodigt, zorg ervoor dat de aanvraag payload het volgende bevat:
context: jitOrganizationIds
om te specificeren welke organisatie(s) de gebruiker zal joinen.- Stel een langere
expiresIn
tijd in (bijv. 2 dagen of 1 week) om gebruikers voldoende tijd te geven om de uitnodiging te accepteren.
Voorbeeld van aanvraagpayload:
-
Verstuur de uitnodigingslink naar het e-mailadres van de gebruiker (bijv.
https://yourapp.com/landing-page?type=organizationMemberInvitation&token=YHwbXSXxQfL02IoxFqr1hGvkB13uTqcd&[email protected]
). Pas jouw e-mailsjabloon aan, bijvoorbeeld:Wanneer gebruikers op "Accepteer de uitnodiging" klikken, zullen ze automatisch inloggen of zich inschrijven en automatisch bij de organisatie voegen.
Beheer accountconflicten
Wat gebeurt er als een gebruiker al is ingelogd en op een andere magic link klikt?
Om accountconflicten correct te beheren, zorg ervoor dat het volgende is ingesteld:
- Vermijd het toevoegen van
login
in de "aanmeldprompt": Stel de aanmeldprompt niet in inclusieflogin
. Als dit onjuist is ingesteld, logt Logto automatisch in met het account dat is gekoppeld aan het magic link token, waarmee de accountwissel-prompt wordt omzeild. - Behoud bestaande tokens: Wanneer de
signIn()
functie wordt aangeroepen, specificeer declearTokens: false
parameter om te voorkomen dat bestaande tokens worden gewist. Als deze optie wordt gebruikt, zorg ervoor dat je handmatig tokens wist op de aanmeldcallbackpagina.
Na de juiste configuratie zal de gebruikerservaring als volgt zijn:
- Magic link voor het huidige account: Als de gebruiker al is ingelogd en klikt op een magic link voor hetzelfde account, zal Logto het eenmalige token verifiëren en de gebruiker aan de opgegeven organisaties toewijzen indien nodig.
- Magic link voor een ander account: Als de gebruiker is ingelogd en klikt op een magic link voor een ander account, zal Logto de gebruiker uitnodigen om ofwel:
- Doorgaan als het nieuwe account: Logto schakelt naar het nieuwe account na tokenverificatie.
- Blijven bij het huidige account: Logto slaat de tokenverificatie over en stuurt de gebruiker terug naar het huidige account.
Beheer foutpagina's voor ongeldig verklaarde magic links
Wanneer gebruikers op een ongeldige magic link klikken, worden ze doorgestuurd naar een foutpagina met een duidelijk uitleg van het probleem. Hieronder staan de mogelijke foutscenario's en hun berichten:
Naam | Beschrijving |
---|---|
token_not_found | Actief token niet gevonden met opgegeven e-mail en token. |
email_mismatch | E-mail komt niet overeen met het opgegeven token. |
token_expired | Het token is verlopen. |
token_consumed | Het token is verbruikt. |
token_revoked | Het token is ingetrokken. |
cannot_reactivate_token | Token kan niet worden geheractiveerd. |
Elke foutpagina geeft een specifiek bericht, dat gebruikers helpt de reden achter de ongeldige magic link te begrijpen en hen begeleidt bij de volgende stappen. Bijvoorbeeld:
Conclusie
Logto levert enterprise-grade beveiliging via flexibele, wachtwoordloze inlogstromen met magic links. Het is een eenvoudige maar krachtige manier om soepele gebruikerservaringen te creëren—of je gebruikers nu uitnodigt om lid te worden van een organisatie, ze moeiteloos accounts laat aanmaken, of probleemloze authenticatie biedt. En omdat Logto lastige situaties behandelt zoals accountconflicten en verlopen tokens, krijgen jouw gebruikers elke keer een veilig en frustratie-vrij proces.
Klaar om je IAM te moderniseren met kogelvrije authenticatie?