Clojure:
Inviare una richiesta http con autenticazione di base
Come fare:
(require '[clj-http.client :as client])
(defn fetch-protected-resource [url username password]
(let [credentials (str username ":" password)
encoded-credentials (-> credentials (.getBytes) java.util.Base64/getEncoder (.encodeToString))]
(client/get url {:headers {"Authorization" (str "Basic " encoded-credentials)}})))
;; Uso:
(fetch-protected-resource "http://example.com" "mario.rossi" "password123")
Sample output:
{:status 200, :headers {...}, :body "..."}
Approfondimento
L’autenticazione HTTP di base è un metodo antico ma semplice, incluso nello standard HTTP. Sostituita da soluzioni più moderne come OAuth, rimane utilizzata per la semplicità o legacy systems. Bisogna mandare le credenziali codificate in Base64, ma attenzione: senza HTTPS è insicuro. Nei progetti Clojure, clj-http
è una scelta comune per fare richieste HTTP, con opzioni facili per l’autenticazione.
Vedi anche
- Documentazione di
clj-http
: https://github.com/dakrone/clj-http - Autenticazione HTTP di base su MDN: https://developer.mozilla.org/en-US/docs/Web/HTTP/Authentication#basic_authentication_scheme