QUARKUS, JWT RBAC,

0

Załóżmy, że mam endpointy chronione przez jwt zrobione według tego tutorialu: https://quarkus.io/guides/security-jwt#create-jwtclaimsbuilder-and-set-the-claims

   @POST
   @Path("register")
   @PermitAll
   public Uni<Long> registerUser(User user) {
       return Users.register(user);
   }


   @GET
   @Path("userData/{name}")
   @RolesAllowed({ "User", "Admin" }) 
   public Uni<Users> getUser(@PathParam String name) {
       return Users.getUserDataByName(name);
   }

W jaki sposób mam teraz rejestrować i weryfikować użytkowników poprzez te endpointy?

Czy jeśli dane użytkownika to ,np. login, hasło, email, to mam po prostu generować z tych danych token po stronie serwera, dla każdego użytkownika? I później w aplikacji łączącej się z endpointami, tak samo, przy każdym chronionym połączeniu generować token i wysyłać na serwer w celu weryfikacji?

0

Co to znaczy endpointy chronione przez JWT?

0

@Charles_Ray: Że mamy przy endpoincie ,np. @RolesAllowed({ "User", "Admin" }) , i żeby móc się z nim połączyć musimy wysłać zapytanie z tokenem.

Czyli, możemy to zrobić, np. tak jak w przykładzie, czyli generując token poleceniem:

mvn exec:java -Dexec.mainClass=org.acme.security.jwt.GenerateToken -Dexec.classpathScope=test -Dsmallrye.jwt.sign.key-location=privateKey.pem

i później zwyczajnie kopiując go i dodając do zapytania (,np. wklejając go w Postmanie w polu Authorization -> Bearer Token -> Token).

0

Nie znam quarkusa. W każdym razie flow wygląda tak:

  • na podstawie jakiegoś uwierzytelniania generujesz token JWT, w claims wrzucasz identyfikator użytkownika, jego rolę (możesz to robić na tym, albo innym serwerze)
  • przyjmując żądanie weryfikujesz autentyczność i integralność tokenu - czy podpis się zgadza, czy nie jest przeterminowany, czy certyfikat, którym jest podpisany jest zaufany / zgadza się klucz aes
  • bierzesz sekcję claims i dekodujesz, dane o użytkowniku i jego roli przekazujesz jako kontekst / request bean / parametr (nie wiem co ten framework obsługuje i jak)
  • w metodzie sprawdzasz, czy dana rola jest uprawniona, czy użytkownik sięga do właściwych danych

Nie wiem jak konkretnie wykonać te kroki we frameworku.

Do wszystkich powyższych rzeczy możesz użyć dowolnej biblioteki, lista tutaj: https://jwt.io/ Używałem jose4j, działa.

1 użytkowników online, w tym zalogowanych: 0, gości: 1