Functioneel programmeren met Clojure en backendontwikkeling op de JVM · Les

Authenticatie en autorisatie

Beveilig uw Clojure-backend met tokengebaseerde authenticatie en rolgebaseerde autorisatie via Ring-middleware.

Les 4 van 413 stappen

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) ; => true

Wat 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
Gratis beginnen

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

  1. Een RESTful API bouwen
  2. Eventgestuurde architecturen
  3. Systeemontwerp en schaalbaarheidspatronen
  4. Authenticatie en autorisatie
← Terug naar Functioneel programmeren met Clojure en backendontwikkeling op de JVM