Kihagyás

Mockolt JWT token elkészítése tesztekhez

Az integrációs tesztekhez szeretnénk mockolni a keycloak-os autentikációt, ehhez szükségünk van olyan valid JWT tokenekre, amik nem járnak le. Ahhoz, hogy egy ilyen token-t manuálisan elő tudjunk állítani szükségünk lesz a privát kulcsra, amivel a Keycloak aláírja a JWT tokeneket.

1. JWT token megszerzése

Először szükségünk lesz egy olyan JWT tokenre, amit a Keycloak állított elő. Ennek megszerzésére több mód is van. Az egyik, hogy a saját alkalmazásunkból bejelentkezés után az egyik kérésből kimásoljuk az Authorization fejlécből a Bearer utáni tokent.

auth_bearer.png

2. JWT token átírása

Erre egy jó eszköz a jwt.io weboldal, ahol tudjuk szövegesen szerkeszteni a JWT tokent.

  1. Ide beillesztve jobb oldalon láthatjuk a token payload-ját, itt kell átírnunk először az exp mezőt, lehetőleg olyan magas értékre, hogy ne legyen probléma a lejárat (pl. 32492389873).
  2. Az iss mezőt is át kell írni úgy, hogy maga a domain megegyezzen majd azzal a mock szerver címével, amit majd az integrációs tesztek során használunk. Alapesetben a keycloak elérése localhoston: http://localhost:8071/realms/admin-realm, integrációs tesztek közben pedig a mockolt szerver címe: http://localhost:12345/realms/admin-realm

jwt_io.png

3. JWT token aláírása

Ahhoz, hogy a token valid maradjon alá kell írnunk a privát kulccsal. Ezt a kulcsot az exportált konfigból tudjuk kimásolni (admin-keycloak-realm.json) az org.keycloak.keys.KeyProvider rész alatt lévő rsa-generated nevű elem config.privateKey mezőjéből.

Fontos, hogy a kulcshoz tegyük hozzá az alábbi fejlécet és láblécet, és úgy illesszük be az oldalra:

-----BEGIN RSA PRIVATE KEY-----

privát kulcs helye

-----END RSA PRIVATE KEY-----

jwt_io_keys.png

Ha mindent jól csináltunk, akkor az oldal alján, bal oldalt a „Signature verified“ üzenetet láthatjuk, ezután ki lehet másolni bal oldalról az átírt JWT-t, és felhasználni a tesztekben az Authorization: Bearer header-ben.