Go to file
2020-10-15 23:32:00 +02:00
api-mocks Prosty sequential proxy 2020-10-11 13:51:18 +02:00
dex Implementacja DEX 2020-10-15 23:08:04 +02:00
krakend Implementacja DEX 2020-10-15 23:08:04 +02:00
ldap Implementacja DEX 2020-10-15 23:08:04 +02:00
.env.dist .env.dist 2020-10-15 20:42:18 +02:00
.gitignore Wstępna implementacja JWT - tak tego nie rób! 2020-10-14 20:55:43 +02:00
docker-compose.yml Implementacja DEX 2020-10-15 23:08:04 +02:00
Makefile Makefile 2020-10-15 17:36:15 +02:00
README.md Implementacja DEX - readme 2020-10-15 23:32:00 +02:00

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=groups+openid+profile+email+offline_access&state=I+wish+to+wash+my+irish+wristwatch&template=tectonic

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