krakend/README.md

45 lines
1.5 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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](https://www.ory.sh/hydra/docs/), która jest dostawcą protokołu **OAuth2** oraz **OpenID** aby zabezpieczyć nasze api za pomocą [JWT](https://jwt.io/).
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:
```mermaid
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`
```mermaid
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
```
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](https://asciinema.org/a/Py3dbR2m5Jt3FdhGI7eINtpdu.png)](https://asciinema.org/a/Py3dbR2m5Jt3FdhGI7eINtpdu)