Clojure-funktionaalinen ohjelmointi ja JVM-backend-kehitys · Oppitunti

Autentikointi ja valtuutus

Suojaa Clojure-taustajärjestelmäsi tunnistepohjaisella autentikoinnilla ja roolipohjaisella valtuutuksella Ring-middlewarea käyttäen.

Oppitunti 4/413 vaihetta

Autentikointi ja valtuutus on ilmainen Clojure-funktionaalinen ohjelmointi ja JVM-backend-kehitys-oppitunti CoddyKitissä. Tämä on oppitunti 4/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Clojure-funktionaalinen ohjelmointi ja JVM-backend-kehitys-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Clojure-funktionaalinen ohjelmointi ja JVM-backend-kehitys-kurssilla on yhteensä 4 oppituntia.

Todennus ja valtuutus

Kaksi eri huolenaihetta:

  • Todennus (AuthN): kuka olet?
  • Valtuutus (AuthZ): mitä saat tehdä?

Henkilöllisyys on vahvistettava ennen käyttöoikeuksien tarkistamista.

Salasanojen tiivistäminen

Älä koskaan tallenna salasanoja selväkielisinä. Käytä hidasta, suolattua tiivistettä, kuten bcrypt-tiivistettä, buddy-kirjaston kautta.

(require '[buddy.hashers :as hashers])

(def stored (hashers/derive "secret123"))
(hashers/check "secret123" stored) ; => true

Mikä on JWT?

JSON Web Token on allekirjoitettu ja itsenäinen tunniste, joka sisältää väittämiä, kuten käyttäjätunnuksen, roolit ja vanhenemisajan. Palvelin voi vahvistaa sen ilman tietokantakyselyä.

Tunnisteen myöntäminen

Onnistuneen kirjautumisen jälkeen allekirjoita käyttäjän väittämät sisältävä tunniste salaisella avaimella.

(require '[buddy.sign.jwt :as jwt])

(defn make-token [user]
  (jwt/sign {:user-id (:id user) :role (:role user)}
            secret-key))

Tunnisteen vahvistaminen

Lue tunniste jokaisella pyynnöllä Authorization-otsakkeesta ja vahvista allekirjoitus. Virheellinen tai vanhentunut tunniste aiheuttaa poikkeuksen.

(defn verify [token]
  (jwt/unsign token secret-key))

Todennuksen middleware

Kääri käsittelijät niin, että vahvistettu henkilöllisyys liitetään pyyntöön tai palautetaan vastaus 401.

(defn wrap-auth [handler]
  (fn [request]
    (if-let [token (bearer-token request)]
      (handler (assoc request :identity (verify token)))
      {:status 401 :body "Unauthorized"})))

Roolipohjainen valtuutus

Kun henkilöllisyys on tiedossa, tarkista roolit ennen toiminnon sallimista.

(defn require-role [role handler]
  (fn [request]
    (if (= role (get-in request [:identity :role]))
      (handler request)
      {:status 403 :body "Forbidden"})))

401 vai 403

Käytä oikeaa tilakoodia:

  • 401 Unauthorized: käyttäjää ei ole todennettu (tunniste puuttuu tai on virheellinen)
  • 403 Forbidden: käyttäjä on todennettu, mutta häneltä puuttuu käyttöoikeus

Reittien suojaaminen

Yhdistä middleware Compojureen suojataksesi tietyt päätepisteet ja jättääksesi julkiset päätepisteet avoimiksi.

(defroutes app
  (GET "/health" [] ok)
  (-> (GET "/admin" [] admin-page)
      (#(require-role :admin %))
      wrap-auth))

Tunnisteen vanheneminen ja päivitys

Aseta käyttötunnisteille lyhyt vanhenemisaika, jotta vuotamisesta aiheutuva vahinko rajoittuu, ja myönnä pitkäkestoisia päivitystunnisteita uusien tunnisteiden hankkimiseen ilman uutta kirjautumista.

(jwt/sign {:user-id 1 :exp (+ (now) 900)} secret-key)

Tietoturvan parhaat käytännöt

Tärkeimmät säännöt:

  • Tarjoa todennus aina HTTPS:n kautta
  • Tallenna salaisuudet ympäristömuuttujiin, ei koodiin
  • Tiivistä salasanat bcryptillä tai argon2:lla
  • Pidä käyttötunnisteiden voimassaoloaika lyhyenä

Pikatesti

Testaa tietosi tietoturvasta.

Kertaus

Opit suojaamaan Clojure-taustapalvelun.

  • Tiivistä salasanat bcryptillä
  • Myönnä ja vahvista JWT-tunnisteita tilattomaan todennukseen
  • Käytä middlewarea AuthN-todennukseen ja roolitarkistuksia AuthZ-valtuutukseen
  • Palauta vastauksena oikein joko 401 tai 403
Aloita maksutta

Opi Clojure tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
12
Oppitunnit
48

Usein kysytyt kysymykset

Onko oppitunti ”Autentikointi ja valtuutus” ilmainen?

Kyllä – oppitunnin ”Autentikointi ja valtuutus” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Clojure-funktionaalinen ohjelmointi ja JVM-backend-kehitys-kurssin, päivitä CoddyKit PROhon. Clojure-funktionaalinen ohjelmointi ja JVM-backend-kehitys-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Autentikointi ja valtuutus”?

Suojaa Clojure-taustajärjestelmäsi tunnistepohjaisella autentikoinnilla ja roolipohjaisella valtuutuksella Ring-middlewarea käyttäen. Harjoittelet Clojure-funktionaalinen ohjelmointi ja JVM-backend-kehitys-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Clojure-funktionaalinen ohjelmointi ja JVM-backend-kehitys-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Clojure-funktionaalinen ohjelmointi ja JVM-backend-kehitys-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 4/4.

Kuinka kauan ”Autentikointi ja valtuutus”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä Clojure-funktionaalinen ohjelmointi ja JVM-backend-kehitys-oppitunnilla?

Kyllä. Jokainen Clojure-funktionaalinen ohjelmointi ja JVM-backend-kehitys-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. RESTful API:n rakentaminen
  2. Tapahtumavetoiset arkkitehtuurit
  3. Järjestelmäsuunnittelu ja skaalautuvuusmallit
  4. Autentikointi ja valtuutus
← Takaisin: Clojure-funktionaalinen ohjelmointi ja JVM-backend-kehitys