Autentikointi ja valtuutus
Suojaa Clojure-taustajärjestelmäsi tunnistepohjaisella autentikoinnilla ja roolipohjaisella valtuutuksella Ring-middlewarea käyttäen.
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) ; => trueMikä 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
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
- RESTful API:n rakentaminen
- Tapahtumavetoiset arkkitehtuurit
- Järjestelmäsuunnittelu ja skaalautuvuusmallit
- Autentikointi ja valtuutus