Wpis z mikrobloga

#java #jwt #securit #spring

Mirki, robię apkę do generowania JWT w spring boocie. Apka ma udostępniać klucze publiczne, przez które serwisy sobie będą walidować tokeny (jak tutaj: https://login.microsoftonline.com/common/discovery/v2.0/keys)

No i pojawia się pytanie : Będę miał wiele kluczy prywatnych/publicznych ładowanych z pliku. Każdy prywatny klucz będzie miałzbiór publicznych kluczy (żeby nie generować tokenu zawsze tym samym kluczem prywatnym).

Klient w zależności jaki token chce będzie uderzać pod konkretny endpoint (generate/token1, generate/token2...) i wtedy korzystając z różnych kluczy prywatnych będę podpisywać token. Certyfikaty będą się różnić m.in exp. datą.

W jaki sposób udostępniając endpoint z publicznymi kluczami serwisy mogą walidować token nie wiedząc którym kluczem był podpisany?
  • 3
@mariusz-laszczka: moim zdaniem tak: jeśli generujesz klucz publiczny załóżmy nadajesz mu jakieś uid i zapisujesz to w bazie, uid klucza publicznego umieszczasz w payload JWT.
Wtedy service może zdekodować token, odczytać uid klucza prywatnego (z payload), wysyła zapytanie do Ciebie, odsyłasz klucz publiczny i service waliduje token i zapisuje sobie public key na przyszłość.