Authenticatie en autorisatie
Beveilig uw Clojure-backend met tokengebaseerde authenticatie en rolgebaseerde autorisatie via Ring-middleware.
Authenticatie en autorisatie is een gratis Functioneel programmeren met Clojure en backendontwikkeling op de JVM-les op CoddyKit. Dit is les 4 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Functioneel programmeren met Clojure en backendontwikkeling op de JVM. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Functioneel programmeren met Clojure en backendontwikkeling op de JVM bevat in totaal 4 lessen.
AuthN versus AuthZ
Twee verschillende aandachtspunten:
- Authenticatie (AuthN): wie ben je?
- Autorisatie (AuthZ): wat mag je doen?
Je moet de identiteit verifiëren voordat je machtigingen controleert.
Wachtwoorden hashen
Sla nooit wachtwoorden als platte tekst op. Gebruik een trage hash met salt, zoals bcrypt via de buddy-bibliotheek.
(require '[buddy.hashers :as hashers])
(def stored (hashers/derive "secret123"))
(hashers/check "secret123" stored) ; => trueWat is een JWT?
Een JSON Web Token is een ondertekend, zelfstandig token met claims (gebruikers-id, rollen, vervaltijd). De server kan het verifiëren zonder een database op te vragen.
Een token uitgeven
Onderteken na een geslaagde aanmelding een token met de claims van de gebruiker en een geheime sleutel.
(require '[buddy.sign.jwt :as jwt])
(defn make-token [user]
(jwt/sign {:user-id (:id user) :role (:role user)}
secret-key))Een token verifiëren
Lees bij elk verzoek het token uit de Authorization-header en verifieer de handtekening. Een ongeldig of verlopen token veroorzaakt een fout.
(defn verify [token]
(jwt/unsign token secret-key))Middleware voor authenticatie
Wikkel handlers in zodat de geverifieerde identiteit aan het verzoek wordt gekoppeld, of geef 401 terug.
(defn wrap-auth [handler]
(fn [request]
(if-let [token (bearer-token request)]
(handler (assoc request :identity (verify token)))
{:status 401 :body "Unauthorized"})))Autorisatie op basis van rollen
Controleer, zodra de identiteit bekend is, de rollen voordat je een actie toestaat.
(defn require-role [role handler]
(fn [request]
(if (= role (get-in request [:identity :role]))
(handler request)
{:status 403 :body "Forbidden"})))401 versus 403
Gebruik de juiste status:
- 401 Unauthorized: niet geauthenticeerd (geen of ongeldig token)
- 403 Forbidden: wel geauthenticeerd, maar geen machtiging
Routes beveiligen
Combineer middleware met Compojure om specifieke eindpunten te beveiligen en openbare eindpunten toegankelijk te houden.
(defroutes app
(GET "/health" [] ok)
(-> (GET "/admin" [] admin-page)
(#(require-role :admin %))
wrap-auth))Vervaltijd en vernieuwen van tokens
Stel een korte vervaltijd in voor toegangstokens om de schade bij lekken te beperken, en geef langlevende vernieuwingstokens uit om nieuwe tokens te verkrijgen zonder opnieuw aan te melden.
(jwt/sign {:user-id 1 :exp (+ (now) 900)} secret-key)Beste beveiligingspraktijken
Belangrijke regels:
- Bied authenticatie altijd aan via HTTPS
- Sla geheimen op in omgevingsvariabelen, niet in code
- Hash wachtwoorden met bcrypt/argon2
- Houd toegangstokens kort geldig
Korte controle
Test je kennis van beveiliging.
Samenvatting
Je hebt geleerd hoe je een Clojure-backend beveiligt.
- Hash wachtwoorden met bcrypt
- Geef JWT's uit en verifieer ze voor stateless authenticatie
- Gebruik middleware voor AuthN en rolcontroles voor AuthZ
- Geef 401 en 403 correct terug
Leer Clojure met een AI-tutor — gratis
Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.
- Cursussen
- 12
- Lessen
- 48
Veelgestelde vragen
Is de les “Authenticatie en autorisatie” gratis?
Ja — de volledige tekst van “Authenticatie en autorisatie” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus Functioneel programmeren met Clojure en backendontwikkeling op de JVM wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus Functioneel programmeren met Clojure en backendontwikkeling op de JVM bevat in totaal 4 lessen.
Wat leer ik in “Authenticatie en autorisatie”?
Beveilig uw Clojure-backend met tokengebaseerde authenticatie en rolgebaseerde autorisatie via Ring-middleware. Je oefent met Functioneel programmeren met Clojure en backendontwikkeling op de JVM door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.
Heb ik ervaring nodig om met Functioneel programmeren met Clojure en backendontwikkeling op de JVM te beginnen?
Ervaring vooraf is niet nodig. Functioneel programmeren met Clojure en backendontwikkeling op de JVM op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 4 van 4.
Hoe lang duurt de les “Authenticatie en autorisatie”?
De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.
Kan ik code schrijven en uitvoeren in deze les over Functioneel programmeren met Clojure en backendontwikkeling op de JVM?
Ja. Elke les over Functioneel programmeren met Clojure en backendontwikkeling op de JVM bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.
Alle lessen in deze cursus
- Een RESTful API bouwen
- Eventgestuurde architecturen
- Systeemontwerp en schaalbaarheidspatronen
- Authenticatie en autorisatie