Clojure:
Wysyłanie zapytania http z podstawową autoryzacją
How to: (Jak to zrobić:)
(require '[clj-http.client :as client])
(defn fetch-secure-resource [url username password]
(let [credentials (str username ":" password)
encoded-credentials (.toString (java.util.Base64/getEncoder (java.nio.charset.StandardCharsets/UTF_8) (.getBytes credentials)))]
{:status (:status (client/get url {:basic-auth [username password]}))
:body (:body (client/get url {:headers {"Authorization" (str "Basic " encoded-credentials)}}))}))
(println (fetch-secure-resource "http://secured-website.com/resource" "myUser" "myPass"))
Sample output:
{:status 200, :body "Here is your secure content."}
Deep Dive (Dogłębny wgląd):
Zarządzanie accessem jest stare jak Internet. W początkowych dniach, pojawiała się Basic Authentication - prosta lecz najsłabsza zabezpieczeń. Mimo to, ciągle jest używana, zwykle gdy trzeba coś prototypować. Alternatywy obejmują OAuth, JWT i inne bardziej złożone systemy. W Clojure, wysyłanie żądania HTTP z autoryzacją Basic wymaga kodowania ’login:hasło’ w Base64 i dołączenia tego do nagłówków żądania - to garść linijek, które robią robotę. Oczywiście, jeśli potrzebujesz więcej, biblioteki jak clj-http
oferują wbudowane opcje, by to uprościć.