Project

General

Profile

Project activity #29451

open

Project activity #28068: Rollen maken voor Tezza | O.b.v. de huidige 4 Alfresco-rollen, omwille dat klanten het beter kunnen beheren

Project activity #28339: Nieuwe autorisatieprofielen maken voor Tezza

Tezza configuratie services applicatie

Added by Bram Geerlings 8 months ago. Updated 4 days ago.

Status:
Feedback
Priority:
P5 Low
Category:
-
Target version:
Start date:
05/12/2024
Due date:
% Done:

71%

Estimated time:
(Total: 0.00 h)

Description

Tijdens het overleg rondom Autorisatieprofielen en de implementatie ervan kwam het idee naar voren dit in een eigen (SpringBoot) applicatie onder te brengen.

Voordelen hiervan:
  • Configuratie wordt niet langer opgeslagen in Alfresco, wat het deployen van nieuwe configuraties gemakkelijker maakt (bijv. bij Amsterdam).
  • Configuratie wordt losgekoppeld van Alfresco; geen dataLists voor het maken van autorisatie profielen.
Het voorstel is een SpringBoot applicatie te maken als POC die het configureren van Autorisatieprofielen ondersteunt.
  • Vanuit een UI kan een profiel worden opgesteld volgens de opgezette voorwaarden. Deze wordt als JSON naar de service gestuurd.
  • De service slaat de configuratie op. MongoDB is een noSQL, non-relationele database die makkelijk met ongestructureerde JSON werkt. Via SpringBoot data is hier makkelijk mee te communiceren
    • Omdat de database non-relationeel is wordt er moeilijk een relatie gelegd tussen verschillende modellen. Het zal mogelijk zijn profielen op te halen met de bijbehorende gebruikers, maar niet om van 1 gebruiker alle profielen waar zij lid van zijn.
  • Als de configuratie is opgeslagen doet de service middels API calls naar Alfresco de nodigde bewerkingen (Toevoegen van gebruikers aan groepen, groepen toekennen aan zaaktype/objecttype sites

Het idee van @Tahir Malik is dat in deze applicatie later ook (bijvoorbeeld) de .json extensions in opgeslagen kunnen worden.


Subtasks 7 (2 open5 closed)

Project activity #30129: Autorisatie rest api configuratie application via KeycloakResolvedBram Geerlings05/12/2024

Actions
Project activity #30509: Usergroups opnemen in profielResolvedErik Hoogland07/01/2025

Actions
Project activity #30549: AP: Queueing implementeren incl. error-queueBacklogContezza Development08/01/2025

Actions
Project activity #30551: AP: Toevoegen call ophalen profielen ingelogde gebruikerResolvedBram Geerlings08/01/2025

Actions
Project activity #30569: AP: Delete profiel en publish refactorResolvedBram Geerlings10/01/2025

Actions
Project activity #31012: AP: Foutieve publicatie loggen en tonen in de UIBacklogContezza Development24/02/2025

Actions
Project activity #31098: AP: Bootstrap users in dockerResolvedBram Geerlings03/03/2025

Actions
Actions #1

Updated by Bram Geerlings 8 months ago

  • Status changed from Backlog to Closed
Actions #2

Updated by Bram Geerlings 8 months ago

  • Status changed from Closed to New
Actions #3

Updated by Bram Geerlings 7 months ago · Edited

Na overleg met @Tahir Malik en @Diego Mirandola

Huidige uitgangspunt is als volgt:

Vanuit de front-end worden profielen in elkaar gezet vanuit een UI waarin het mogelijk is om:
  • Profielnaam in te vullen
  • Rol te selecteren (SiteConsumer, SiteManager etc.)
  • Sites te selecteren (multi-select, indivudeel, all)
  • Gebruikers te selecteren (multi-select, individueel, all)

Profielen kunnen worden opgeslagen in een springboot applicatie via een API-call /save, en ook worden opgehaald/bewerkt.
Onderstaand een voorbeeld van een mogelijk JSON schema voor een lijst authorisatie profielen:

{
    "version": "<someVersion>",
    "id": "<someGeneratedId>",
    "AuthorisatieProfielen": [
        {
            "profielNaam": "Test Profiel",
            "users": [
                "gorden" 
            ],
            "rolName": "SiteConsumer",
            "zaaktypen": [
                "ZTMeldingOpenbareRuimte" 
            ],
            "objecttypen": []
        }
    ]
}

Opgeslagen profielen kunnen worden gepubliceerd. Dit gaat via een aparte API call /publish. Deze call verzamelt de te publiceren profielen (bijvoorbeeld op basis van een lijst van IDs die is meegegeven vanuit de UI) en doet een call naar Alfresco om in bulk te bewerken. Foutmeldingen worden per call teruggeven naar de UI.

Actions #4

Updated by Olav Allema 7 months ago

  • Assignee set to Bram Geerlings
Actions #5

Updated by Bram Geerlings 5 months ago

  • Status changed from New to In Progress

Requirements zoals overlegd met Tahir:

  • Mongo vervangen door Postgresql --> Bram & Roel
  • Alfresco authenticatie gebruiken bij de Spring-boot app --> Bram & Rick
  • Publicatie pusht groepen naar Keycloack als ze niet bestaan en zet de juiste gebruikers in de rollen in Keycloak --> Bram & Erik
    • Dit geldt alleen voor GZAC/Camunda klanten. Er moet een setting zijn waar je wel/niet koppelt met Keycloak
  • Initialisatie script met de default rollen opstellen als een setup --> Maaike & Diego
  • Goede visuele beschrijving maken in de App wat de rollen Tezza Beheer, Gemeente, Postintake doen --> Maaike
Actions #6

Updated by Bram Geerlings 5 months ago

  • Groepen aanmaken in Keycloack via de real-import json --> Erik
  • Backend AP aanpassen dat hij ROLES aanmaakt in Keycloack --> Bram
  • Backend inloggen met Keycloack JWT Token die je vanuit de Frontend mee krijgt --> Erik
  • Onderzoeken naar link tussen profiel & Zaaktype --> Bram
Actions #7

Updated by Erik Hoogland 5 months ago

  • Subtask #30129 added
Actions #8

Updated by Bram Geerlings 5 months ago

Zoals besproken met Tahir en Diego:

Keycloak wordt optioneel, eigenlijk alleen te gebruiken wanneer GZAC ook wordt gebruikt.

De applicatie slaat groep, rol, gebruikers en sites lokaal op. Front-end kan de api bevragen om de autorisatiegroepen van een gebruiker op te vragen bij inloggen.
De applicatie schrijft groep, rol en gebruikers ook weg naar Keycloak voor gebruik in GZAC.

Frontend is verantwoordelijk voor het ophalen van de autorisatie profielen en site memberships en hier een diff in te laten zien wanneer gebruikers lid zijn van een site maar dit lidmaatschap niet uit een profiel halen.

Actions #9

Updated by Bram Geerlings 5 months ago

  • Assignee changed from Bram Geerlings to Erik Hoogland
To-do:
  • Publish aanpassen:
    • Get site users
      • Filter users met gelijke rechten, deze hoeven niet te worden weggeschreven
      • Post request voor users nog niet toegekend aan de site
      • Put request voor users met rechten anders dan die nu op de site staan
  • Put controller voor autorisatie profielen die worden bijgewerkt
    • Ook bijwerken in keycloak als dit nodig is
  • Alfresco/Keycloak token authenticatie
Actions #10

Updated by Bram Geerlings 5 months ago

https://git.contezza.nl/develop/alfresco/contezza-configuratie-services

Main branch bevat de laatste versie.

Hier in is het volgende nog extra toegevoegd:

Bij het publiceren van profielen worden de site memberships opgehaald en gefilterd:
Komt er een gebruiker niet voor in de sitememberships dan wordt deze toegevoegd aan een POST lijst.
Komt er een gebruiker voor in de sitemememberships maar met een rol anders dan in de autorisatieprofielen dan wordt deze toegevoegd aan een PUT lijst.

De POST lijst wordt gebruikt in een bulk call naar site/{siteId}/memberships met daarin alle userIds en rollen.
De PUT lijst wordt gebruikt om per gebruiker een call naar site/{siteId}/members/{userId} te doen met daarin de nieuwe rol.

DELETE is lastiger:
Als gebruikers niet in de autorisatieprofielen voorkomen maar wel op de sites kunnen we er niet vanuit gaan dat ze verwijderd moeten worden omdat iemand ze met de hand kan hebben toegevoegd.
Er moet een diff bestaan tussen bestaande profielen en te publiceren profielen om te zien we er verwijderd zijn uit een bestaand profiel en dus van een site moeten worden verwijderd.

Actions #11

Updated by Erik Hoogland 5 months ago

  • Target version changed from Contezza Development Backlog to Tezza 2024.12
Actions #12

Updated by Erik Hoogland 4 months ago

De volgende punten zijn nu toegevoegd:
  • Authentication & Authorization via de Alfresco Auth API
    • Via ticket volledig, via bearer nog deels, zie subticket
  • DevTools
  • Build en start docker
  • Aanmaken rollen in Keycloak ipv groepen
  • Bug fixes AlfrescoApiService
Actions #13

Updated by Erik Hoogland 4 months ago · Edited

  • Status changed from In Progress to Feedback
  • Target version changed from Tezza 2024.12 to Contezza Development 2025.01

Samenvatting van de features:

Het project kan nu als lokale app of als docker container worden gestart, beide met een postgres database in een docker container.
Als lokale app ondersteund het Spring boot DevTools for live reloading. Er is nog geen mogelijkheid om een image voor Harbor te maken.

Het kan starten zonder alfresco of keycloak, maar heeft minstens een Alfresco installatie nodig om calls te kunnen authenticeren en uitvoeren. Een keycloak is nodig als er via een bearer token wordt gewerkt en de property 'settings.keycloak.enabled' op true staat.

Voor meer details over security, zie https://support.contezza.nl/issues/30129#note-2

De volgende calls zijn nu beschikbaar:
  • POST, "/api/configuration/authorisation/profile"
    • Creëert een nieuw profiel in de database
    • Als Keycloak aan staat, maat het ook een rol aan in Keycloak met de gebruikers uit het request
  • PUT, "/api/configuration/authorisation/profile/{id}"
    • Update een bestaand profiel in de database
    • Doet geen aanpassingen in Keycloak
  • DELETE, "/api/configuration/authorisation/profile/{id}"
    • Verwijderd een bestaand profiel uit de database
    • Als Keycloak aan staat, Verwijdert het ook de rol in Keycloak
  • GET, "/api/configuration/authorisation/profile"
    • Haalt alle profielen op
  • GET, "/api/configuration/authorisation/profile/{id}"
    • Haalt één profiel op, op basis van het id
  • GET, "/api/configuration/authorisation/profile/users/{userName}"
    • Zoekt voor een gebruikersnaam alle profielen aan welke deze is toegevoegd
  • POST, "/api/configuration/authorisation/profile/publish"
    • Dit verwerkt het profiel in Alfresco en keycloak
    • Gebruikers die nog niet aan een site in Alfresco zijn toegevoegd, worden hieraan toegevoegd met de juist rol;
    • Gebruikers die in Alfresco een andere rol hebben dan volgens het profiel, worden bijgewerkt.
    • Gebruikers die in Alfresco op een site staan, maar met geen enkele rol in een profiel staan voor die site, worden verwijderd van de site
    • Als Keycloak aanstaat, worden gebruikers ook gesynchroniseerd met de keycloak rol, waarbij het profiel leidend is
Actions #14

Updated by Erik Hoogland 4 months ago

  • Assignee changed from Erik Hoogland to Bram Geerlings

@Bram Geerlings kan jij dit reviewen?

@Maaike Bommerson De request in de Team Workspace van Postman zijn ook bijgewerkt

Actions #15

Updated by Tahir Malik 4 months ago

  • Target version changed from Contezza Development 2025.01 to Tezza 2025.01
Actions #16

Updated by Erik Hoogland 4 months ago

Extra informatie: Als dit project wordt gebruikt met tezza-workspace als backend lokaal:

Voor gebruik zonder keycloak moeten de taken 'platform' en 'share' worden gestart.

Voor gebruik met keycloak moeten de taken 'start-docker-platform' en 'start-docker-share' worden gestart

Actions #17

Updated by Bram Geerlings 4 months ago

  • Target version changed from Tezza 2025.01 to Contezza Development 2025.01

Reviewed en merge naar main gedaan

Actions #18

Updated by Erik Hoogland 4 months ago

URL's zijn aangepast naar /api/configuration/authorisation/profile als base

Actions #19

Updated by Bram Geerlings 4 months ago

  • Subtask #30509 added
Actions #20

Updated by Tahir Malik 4 months ago

  • Subtask #30549 added
Actions #21

Updated by Erik Hoogland 4 months ago

  • Subtask #30551 added
Actions #22

Updated by Bram Geerlings 4 months ago

  • Subtask #30569 added
Actions #23

Updated by Tahir Malik 3 months ago

  • Target version changed from Contezza Development 2025.01 to Tezza 2025.02
Actions #24

Updated by Tahir Malik 3 months ago

  • Subtask #31012 added
Actions #25

Updated by Bram Geerlings 2 months ago

  • Subtask #31098 added

Also available in: Atom PDF