Vse novice

Identiteta in varnost

Gradnik Keycloak: ena pripeta slika, tema za vsak produkt

· Toolkit · 2 min branja

Diagram: gradnik Keycloak uporabljata Reputo in Leadgener; vsak na isto pripeto sliko doda svojo temo za prijavo.

Vsak produkt prijavlja uporabnike prek svojega Keycloaka, paketi API iz toolkita pa zaupajo temu, kar ta Keycloak zapiše v žeton. Reputo in Leadgener sta sliko prej gradila iz quay.io/keycloak/keycloak:26.0, torej iz oznake, ki se premakne z vsako popravno različico. Zato sta lahko dve gradnji iz iste potrditve (commit) vsebovali različni različici Keycloaka.

Kaj gradnik vsebuje in česa ne

Odločili smo se 11. oktobra 2026: gradnik Keycloak je ena osnovna slika, ki vsebuje le tisto, kar mora biti enako v Keycloaku vsakega produkta. To so Keycloak, pripet na povzetek; orodje jq, pripeto na kontrolno vsoto; 32 Keycloakovih sporočil za prijavo v slovenščini; in dva ukaza, ki se v vsebniku izvedeta prek docker exec.

  • setup pripravi, kar API prebere iz žetona: občinstvo (audience), vloge realma, zbrane v zahtevku roles, ki ga bere ASP.NET, in deklarirani atribut organization_id, ki bi ga Keycloak 26 sicer brez opozorila zavrgel.
  • require-terms sprejem pogojev uporabe nastavi kot zahtevano dejanje za vsakega uporabnika, zato Keycloak žetona pred sprejemom ne izda. Shrani se le čas sprejema.

Privzetih vrednosti produktov gradnik ne vsebuje: ime realma, identifikatorji odjemalcev in izvori (origins) so v ovojnem skriptu produkta, setup pa se ustavi, preden kar koli spremeni, in navede vsako manjkajočo spremenljivko. Tudi teme za prijavo ne vsebuje, ker tema na skupni oblikovni sistem doda znamko svojega produkta. Dockerfile produkta v prejšnji fazi zgradi JAR s temo, nato pa:

FROM <kit image>:<X.Y.Z>@sha256:<digest>
COPY --from=theme /app/keycloak-theme/dist_keycloak/reputo-keycloak-theme.jar /opt/keycloak/providers/
RUN /opt/keycloak/bin/kc.sh build --db=postgres --health-enabled=true

Testiran, pripet, nadgrajen po izbiri

Vsaka zahteva za združitev, ki spremeni gradnik, nad zgrajeno sliko požene šest zbirk testov. Ena od njih vsako slovensko sporočilo primerja s Keycloakom v sliki: ključ mora v Keycloaku obstajati, ograde pa morajo ostati enake.

Oznake latest ni, objavljena različica pa se nikoli ne prepiše. Reputo in Leadgener sta imela 13. oktobra pripeto isto različico z istim povzetkom. Dnevnik sprememb označi, kaj različica zahteva od produkta: [keycloak] (najprej varnostna kopija podatkovne baze), [contract] (spremenil se je ukaz, spremenljivka ali pot) ali [behaviour] (pripravljeni realm je drugačen). Vsaka sprememba različice Keycloaka pomeni novo glavno (major) različico gradnika, ker Keycloak svojo podatkovno bazo migrira samo v eno smer. Do 13. oktobra je izšlo pet različic gradnika; kako je nastal, opisuje objava o pravilu žetve.

Za ekipo, ki gradi na toolkitu, to pomeni, da pravila identitete pridejo s sliko: žeton vsebuje, kar API preverja, in Keycloak ga ne izda, dokler uporabnik ne sprejme pogojev. Strani za prijavo in vrednosti realma ostanejo vaše.