krakend/README.md

2.0 KiB

KrakenD api gateway playground

etap2 (JWT)

Tutaj już będzie deko więcej roboty. Backend z etapu1, czyli prosty nie zabezpieczony serwer REST.

Do naszej infrastruktury dodajemy usługę Hydra, która jest dostawcą protokołu OAuth2 oraz OpenID aby zabezpieczyć nasze api za pomocą JWT.

W poprzednim przykładzie (etap1) KrakenD posłóżył nam do sekwencji zapytań do api i jednej odpowiedzi W tym etapie wprowadzimy nowy request zabezpieczony tokenem JWT:

sequenceDiagram
    Użytkownik->>KrakenD: /jwt_access <br/>[Authorizaion: Bearer token]
    KrakenD->>DEX: dex/keys
    DEX-->>KrakenD: jwk
    KrakenD-->>KrakenD: validator <br/>[issuer]
    KrakenD->>Backend: /users/1.json
    Backend-->>KrakenD: response_0
    KrakenD->>+Użytkownik: Response

Dodatkowy scope groups

sequenceDiagram
    Użytkownik->>KrakenD: /jwt_access_admin <br/>[Authorizaion: Bearer token]
    KrakenD->>DEX: dex/keys
    DEX-->>KrakenD: jwk
    KrakenD-->>KrakenD: validator <br/>[issuer, groups: admins]
    KrakenD->>Backend: /users/1.json
    Backend-->>KrakenD: response_0
    KrakenD->>+Użytkownik: Response

Request:

http://127.0.0.1:5556/dex/auth?client_id=example-app&redirect_uri=http%3A%2F%2F127.0.0.1%3A5555%2Fcallback&response_type=code&scope=openid+profile+email+offline_access&state=I+wish+to+wash+my+irish+wristwatch

Request (dodatkowy scope groups dający access to strony admina):

http://127.0.0.1:5556/dex/auth?client_id=example-app&redirect_uri=http%3A%2F%2F127.0.0.1%3A5555%2Fcallback&response_type=code&scope=groups+openid+profile+email+offline_access&state=I+wish+to+wash+my+irish+wristwatch

Flow jest typowo testowy, na razie nie ma revoke jwt, a samo pobranie tokenu należy zrobić za pomocą pliku Makefile.

Przykład wykorzystania KrakenD do zabezpieczenia bakendu za pomocą JWT:

asciicast