Inviare una richiesta http con autenticazione di base

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