Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Toegang per bedrijf binnen model #93

Open
Erikvv opened this issue May 22, 2024 · 2 comments
Open

Toegang per bedrijf binnen model #93

Erikvv opened this issue May 22, 2024 · 2 comments
Assignees

Comments

@Erikvv
Copy link
Member

Erikvv commented May 22, 2024

User story: binnen een AnyLogic simulatie hebben sommige gebruikers meer toegang tot gegevens van 1 bedrijf of alle bedrijven.
Deadline: 10 juni (project drechtsteden)

Keuzes

Belangrijke keuzes die we moeten maken:

  1. Waar slaan we de koppeling gebruiker<>bedrijf op?
    • Dit kan als "resource" in Keycloak of in de Zero/Ztor webapp
    • Wat mij tegen staat aan Keycloak is dat ik vermoed dat ik op twee plekken bij moet gaan houden welke bedrijven onder welk project vallen.
  2. Gaan we de check doen in AnyLogic of van tevoren?
    • Van tevoren is flexibeleren/decentraler. Je zou dit bijvoorbeeld op je eigen PC dit kunnen doen zonder internet-connectiviteit.
    • Van tevoren is meer werk

Hieronder uitgewerkte combinaties

1. High-level flow voor optie via KeyCloak en check in AnyLogic

  1. Gebruiker heeft een Access Token van KeyCloak (bv omdat hij ingelogd is op Zenmo.com)
  2. Access Token wordt gezet als AnyLogic input parameter
  3. AnyLogic vraagt via een query aan KeyCloak of deze gebruiker toegang heeft m.b.v. de access token (Zie https://www.keycloak.org/docs/24.0.4/authorization_services/#_service_obtaining_permissions bullet "permission" en 1e curl voorbeeld)

Gebruiker en resource en tussenliggende entiteiten moeten worden ingesteld in Keycloak:

keycloak-rbac

2. High-level flow voor optie via KeyCloak en check van tevoren

  1. Gebruiker heeft een Access Token van Keycloak
  2. Applicatie (bv zenmo.com evt via zero.zenmo.com) vraagt Keycloak de permissions van de gebruiker voor de resource: dit is een lijst van bedrijven waar de gebruiker toegang toe heeft. Zie https://www.keycloak.org/docs/24.0.4/authorization_services/#_service_obtaining_permissions
  3. Applicatie maakt een "Bedrijven token" m.b.v. een eigen private key
  4. "Bedrijven token" wordt gezet als AnyLogic input parameter
  5. Bij het klikken op een bedrijf verifieert AnyLogic de token* en kijkt of de id/naam van het bedrijf in de token voor komt

3. High-level flow met bedrijven lijst in zero.zenmo.com en check in AnyLogic

  1. Gebruiker heeft een Access Token van KeyCloak (bv omdat hij ingelogd is op Zenmo.com)
  2. Access Token wordt gezet als AnyLogic input parameter
  3. Bij klikken op bedrijf vraagt AnyLogic aan Zero web app of access token bij bedrijf mag
  4. Zero web app zet access token om naar user-id (decoderen met public key validatie https://keycloak.zenmo.com/admin/zenmo/console/#/zenmo/realm-settings/tokens of vragen aan userinfo endpoint https://keycloak.zenmo.com/realms/zenmo/protocol/openid-connect/userinfo)
  5. Zero web app zoekt in zijn database of deze gebruiker is gekoppeld aan het bedrijf

4. High-level flow met bedrijven lijst in zero.zenmo.com en check van tevoren

(combinatie van 2 en 3)

@Erikvv Erikvv changed the title Voor 10 juni: individuele bedrijven toegang Individuele bedrijven toegang May 22, 2024
@Erikvv Erikvv changed the title Individuele bedrijven toegang Bedrijven toegang binnen model May 22, 2024
@Erikvv Erikvv self-assigned this May 22, 2024
@Erikvv Erikvv changed the title Bedrijven toegang binnen model Toegang per bedrijf binnen model May 27, 2024
@Erikvv
Copy link
Member Author

Erikvv commented May 29, 2024

Besproken met Gillis, Naud en Thijs

Het gaat nu om een rol voor een geheel project. Iemand die deze rol heeft krijgt toegang tot gedetailleerde bedrijfsgegevens van alle bedrijven. Toegang verlenen tot de data van individuele bedrijven is nu niet aan de orde.

We gaan deze rol toevoegen aan de Access Token uit Keycloak en in AnyLogic gaan we deze Access Token valideren en decoderen.

@Erikvv
Copy link
Member Author

Erikvv commented Jun 6, 2024

Ik heb dit e2e geimplementeerd (Keycloak+WordPress+AnyLogic).

De library voor AnyLogic staat hier: https://github.com/Zenmo/zero-access

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant