Írta: tom1964h

Hitelesítés a Tomcat serveren

Hitelesítés szerver oldalon - a szervlet felkészítése a hitelesítési képességgel

A server ellenőriz, autentikál - azaz eldönti, hogy a beérkező credentials (azaz hitelesítő adatok, értsd: username és password) helyesek-e. A döntés eredménye mindig kettő féle:

  • mi van ha nem sikeres? -> erre az esetre létrehozzuk a .noAccess() metódust: ez a response-t fogadja és módosítja is: beállít egy hibaüzenetet a response.sendError(401); segítségével: a szerver 401-es hibát ad ki;
  • mi van ha sikeres? -> ebben az esetben kiszolgáljuk a felhasználót.

A TestServlet a döntést egy logikai változóban tárolja el: boolean success = checkOut(request);

A döntést a checkOut() függvény végzi el, a következő logika szerint:

  • előszedi a request-ből a credentials-t: String authValue = request.getHeader("Authorization");
  • megnézi, hogy a string üres-e: if (authValue == null) {...}
  • megnézi, hogy a string Basic … kezdetű-e: if (!authValue.toUpperCase().startsWith("BASIC ")) { ... }
  • dekódol: String userpass = new String(Base64.getDecoder().decode(authValue.substring(6)));
  • adatot tisztít:
    • String userpass = new String(Base64.getDecoder().decode(authValue.substring(6)));
    • int counter = userpass.indexOf(":");
    • String observervedUsername = userpass.substring(0, counter);
    • String observervedPassword = userpass.substring(counter + 1);
  • előveszi a tárolt jelszót és password-öt és összehasonlít: if (observervedUsername.equals(USERNAME) && observervedPassword.equals(PASSWORD)) {...}

A USERNAME és a PASSWORD adatok vagy egy config.conf állományból, vagy egy adatbázisból érkeznek. A TestServlet a success változó alapján vezérli a választ:

		if (success) { ... response legyártása ... 
			} else {
			noAccess(response);
		}


kép forrása postman.com

Hitelesítés szimulálása kliens oldalon (POSTMAN)

A Postman használata segítség a böngésző-kliens és a szerver közötti kommunikációban: világosan megmutatja a belső folyamatokat és a tevékenységet le is menthetjük. Igaz, a bármely böngészőben elérhető Fejlesztő mód (F12) is nagyon részletes információkkal szolgál a szerver-kommunikációról, de a Postman kényelmesebb. Miután letöltöttük, válasszuk a csak kipróbálás módot, ne regisztráljunk és ne jelentkezzünk be. A Postman-ben ki tudjuk választani, milyen HTTP-metódus szerint kérdezzük le a szervert, megadhatjuk a szerver címét és választhatunk a különböző autentikációs módok között is. Feladat a Postman-nel authentikáció ellenőrzése:

  • elindítva ki kell választani a HTTP-method tipusát
  • a kereső-sorba beilleszteni a lekérdezési URL-t: localhost:8080/TestServlet/tests/asd
  • visszaadja a nyers response-t
  • az Authorization fülön teszteljük majd az autentikációt: beírhatjuk a user-t és a jelszót