Hitelesítés a HttpUrlConnection segítségével

Java Top

Most jelentettem be az újat Tanulj tavaszt tanfolyam, amelynek középpontjában az 5. tavasz és a tavaszi bakancs 2 alapjai állnak:

>> ELLENŐRIZZE A FOLYAMATOT

1. Áttekintés

Ebben az oktatóanyagban azt vizsgáljuk, hogyan lehet hitelesíteni a HTTP kéréseket a HttpUrlConnection osztály.

2. HTTP-hitelesítés

A webalkalmazásokban a szerverek megkövetelhetik az ügyfelektől, hogy hitelesítsék magukat. Ennek elmulasztása általában azt eredményezi, hogy a kiszolgáló HTTP 401 (jogosulatlan) állapotkódot küld vissza.

Több hitelesítési séma létezik, amelyek különböznek az általuk biztosított biztonsági erősségtől. A megvalósítási erőfeszítések azonban szintén eltérőek.

Lássunk hármat közülük:

  • alapvető egy olyan séma, amelyről bővebben a következő szakaszban olvashatunk
  • megemészteni hash algoritmusokat alkalmaz a felhasználói hitelesítő adatokon és a kiszolgáló által megadott nonce-n
  • vivő hozzáférési tokent használ az OAuth 2.0 részeként

3. Alapvető hitelesítés

Az alap hitelesítés lehetővé teszi az ügyfelek számára, hogy hitelesítsék magukat egy kódolt felhasználónév és jelszó a Engedélyezés fejléc:

GET / HTTP / 1.1 Engedélyezés: Alapvető dXNlcjpwYXNzd29yZA ==

A kódolt felhasználónév és jelszó karakterlánc létrehozásához egyszerűen a Base64-be kódoljuk a felhasználónevet, amelyet kettőspont követ, majd a jelszó:

basic (user, pass) = base64-encode (user + ":" + pass)

Emlékezzen azonban az RFC 7617 bizonyos óvatosságára:

Ez a séma csak akkor tekinthető a felhasználó hitelesítésének biztonságos módszerének, ha valamilyen külső biztonságos rendszerrel, például a TLS-szel együtt használják

Ez természetesen azért van így, mert a felhasználói név és a jelszó egyszerű szövegként utazik a hálózaton keresztül minden egyes kérésen belül.

4. Hitelesítse a kapcsolatot

Oké, hogy ez a háttér, kezdjük a konfigurálást HttpUrlConnection a HTTP Basic használatához.

Osztály HttpUrlConnection küldhet kéréseket, de először meg kell szereznünk egy példányt egy URL-objektumból:

HttpURLConnection connection = (HttpURLConnection) url.openConnection ();

A kapcsolat számos módszert kínál a konfigurálásához, például setRequestMethod és setRequestProperty.

Olyan furcsa, mint setRequestProperty hangzik, ezt akarjuk.

Miután összekapcsoltuk a felhasználónevet és jelszót a „:” használatával, használhatjuk a java.util.Base64 osztály a hitelesítő adatok kódolásához:

Karakterlánc hitelesítése = felhasználó + ":" + jelszó; byte [] encodedAuth = Base64.encodeBase64 (auth.getBytes (StandardCharsets.UTF_8));

Ezután létrehozzuk a fejléc értékét a szó szerinti „Basic” -ből, majd a kódolt hitelesítő adatokból:

String authHeaderValue = "Basic" + új String (encodedAuth);

Ezután meghívjuk a módszert setRequestProperty (kulcs, érték) a kérelem hitelesítéséhez. Mint korábban említettük, használnunk kell „Engedélyezés” mint a fejlécünk és „Basic” + kódolt hitelesítő adatok mint értékünk:

connection.setRequestProperty ("Engedélyezés", authHeaderValue);

Végül el kell küldenünk a HTTP kérést, például hívással getResponseCode (). Ennek eredményeként kapunk egy HTTP válaszkódot a szervertől:

int responseCode = connection.getResponseCode ();

A 2xx család bármelyike ​​azt jelenti, hogy a kérésünk, beleértve a hitelesítési részt is, rendben volt!

5. Java Hitelesítő

A fent említett alapvető hitelesítési megvalósításhoz minden engedélyhez meg kell adni az engedélyezési fejlécet. Ezzel szemben az absztrakt osztály java.net.Hitelesítő lehetővé teszi az összes kapcsolat hitelesítésének beállítása globálisan.

Először ki kell terjesztenünk az osztályt. Ezután hívjuk a statikus módszert Authenticator.setDefault () hitelesítő példányunk regisztrálása érdekében:

Authenticator.setDefault (új BasicAuthenticator ());

Az alapvető hitelesítési osztályunk csak felülírja a getPasswordAuthentication () az alaposztály nem elvont módszere:

privát végső osztály A BasicAuthenticator kiterjeszti a Hitelesítőt {védett PasswordAuthentication getPasswordAuthentication () {return new PasswordAuthentication (felhasználó, password.toCharArray ()); }}

A Hitelesítő osztály felhasználja hitelesítőnk hitelesítő adatait, hogy automatikusan teljesítse a szerver által megkövetelt hitelesítési sémát.

6. Következtetés

Ebben a rövid oktatóanyagban láthattuk, hogyan alkalmazzuk az alap hitelesítést a (z) keresztül küldött kérésekre HttpUrlConnection.

Mint mindig, a kódpélda megtalálható a GitHubon.

Java alsó

Most jelentettem be az újat Tanulj tavaszt tanfolyam, amelynek középpontjában az 5. tavasz és a tavaszi bakancs 2 alapjai állnak:

>> ELLENŐRIZZE A FOLYAMATOT

$config[zx-auto] not found$config[zx-overlay] not found