W tej prezentacji omawiam typowe zastosowania JWT oraz pokazuję sposoby implementacji obsługi JWT zarówno po stronie klienta jak i serwera (na przykładzie OpenID Connect oraz uwierzytelniania REST API).
zasobów, wykonanie operacji, pobranie danych)? Uwierzytelnianie (np. OpenID Connect) Kim jestem? Czy na pewno jestem „po drugiej stronie”? Uwierzytelnianie vs autoryzacja 2016-11-22- 3 Uwierzytelnianie vs autoryzacja
– potencjalne zagrożenie, jeśli nasza aplikacja wykorzystuje LDAP. Lepiej, żeby robił to pojedynczy provider OpenID. Po co o tym mówimy? 2016-11-22- 6 Po co o tym mówimy?
wysyłać JWT, jako identyfikator tożsamości zalogowanego użytkownika. Zawsze można zweryfikować autentyczność JWT. Po co o tym mówimy? 2016-11-22- 7 Po co o tym mówimy?
są zakodowane base64. JWT jest wyłącznie podpisany przy użyciu algorytmów szyfrujących (najczęściej asymetrycznych, np. RSA) Struktura JSON Web Token 2016-11-22- 11 Struktura JSON Web Token
asymetrycznego). U klienta weryfikacja jest możliwa przy użyciu klucza publicznego. Udostępnianie klucza publicznego możliwe jest w różny sposób, w OpenID dostępny jest JWKS URI. Weryfikacja JWT 2016-11-22- 12 Weryfikacja JWT
do OpenID Providera Po autoryzacji powrót z jednorazowym kodem autoryzacji Prośba o ID token przy użyciu kodu autoryzacji Jeśli kod jest ważny, zwrotnie przesyłany jest JWT Proces (authorization flow)
Postmanem. 1. Należy utworzyć użytkownika (fos:user:create) 2. W Postmanie POST request do http://{domain}/api/login_check. Parametry x-www-form-urlencoded: _username, _password 3. Odpowiedź będzie wyglądała podobnie do poniższej: { "token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpX..." } 4. Każdy call do API (czyli /api/*) musi posiadać nagłówek: Authorization: Bearer {token} gdzie {token} jest tym co otrzymaliśmy w punkcie 3. Jednocześnie {token} zawiera payload, czyli informacje o użytkowniku. JWT