Clojure:
Enviando una solicitud http con autenticación básica
Cómo hacerlo:
(require '[clj-http.client :as client])
(defn fetch-protected-resource [url user password]
(let [credentials (str user ":" password)
encoded-creds (-> credentials (.getBytes) java.util.Base64/getEncoder (.encodeToString))]
(client/get url {:headers {"Authorization" (str "Basic " encoded-creds)}})))
;; Uso:
(println (fetch-protected-resource "http://tu-api.com/recurso-protegido" "usuario" "contraseña"))
Sample output (simulation):
{:status 200, :headers {...}, :body "..."}
Profundización:
La autenticación básica es un método clásico que se remonta a los primeros días de la web. No es el más seguro, puesto que depende de HTTPS para proteger las credenciales en tránsito. Si buscas mayor seguridad, considera usar tokens de autenticación, OAuth o JWT (JSON Web Tokens).
Cuando usas Clojure para enviar solicitudes HTTP, puedes elegir entre clj-http
y otras bibliotecas como http-kit
o aleph
. Cada una tiene sus peculiaridades, pero clj-http
es conocida por su simplicidad y rica interfaz.
En la ejecución del código, asegúrate de que las credenciales no estén codificadas en el mismo. Utiliza variables de entorno o sistemas de gestión de configuración para mantener la seguridad.