You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
-[Modélisation actuelle dans avenirs-portfolio-api](#modélisation-actuelle-dans-avenirs-portfolio-api)
@@ -29,16 +30,18 @@ up: ../authentication/
29
30
-[Microservice de sécurité : avenirs-portfolio-security](#microservice-de-sécurité--avenirs-portfolio-security)
30
31
-[Microservice métier du portfolio : avenirs-portfolio-api](#microservice-métier-du-portfolio--avenirs-portfolio-api)
31
32
-[Architecture possible pour le processus d'alimentation (informatif, non arrêté)](#architecture-possible-pour-le-processus-dalimentation-informatif-non-arrêté)
33
+
-[Schéma du processus d'alimentation](#schéma-du-processus-dalimentation)
32
34
-[Intégration avec l'API Manager](#intégration-avec-lapi-manager)
33
35
-[Principe](#principe)
34
36
-[Bénéfices de la démarche](#bénéfices-de-la-démarche)
35
-
-[Remarque](#remarque)
37
+
-[Remarques](#remarques)
38
+
-[Diagramme de séquence](#diagramme-de-séquence-2)
36
39
-[Adaptations du filtre de sécurité au payload transmis par l'API Manager](#adaptations-du-filtre-de-sécurité-au-payload-transmis-par-lapi-manager)
37
40
-[Evolutions](#evolutions)
38
41
39
42
<br/>
40
43
41
-
## Objectifs(#table-des-matières)
44
+
## Objectifs[⇧](#table-des-matières)
42
45
- Mise en place d'une authentification locale basée sur OIDC de bout en bout faisant intervenir :
43
46
- Le front (client).
44
47
- CAS en tant qu'OIDC provider : authentifie et fournit un access token.
@@ -51,14 +54,15 @@ up: ../authentication/
51
54
52
55
La démarche adoptée est de commencer par une version minimaliste, puis d'améliorer par raffinements successifs.
53
56
54
-
## Première mise en œuvre simplifiée
57
+
## Première mise en œuvre simplifiée[⇧](#table-des-matières)
55
58
56
59
### Simplifications
57
60
58
61
- On considère uniquement l'obtention initiale de l'access token.
59
62
- Le client réalise directement la demande d'authentification auprès de CAS, l'étape de landing page est ignorée pour cette première mise en œuvre.
60
63
- On utilise directement l'access token fourni par l'utilisateur.
61
64
65
+
### Diagramme de séquence
62
66
63
67
{% include img.html
64
68
src="assets/images/authentication_first_step.png"
@@ -68,7 +72,7 @@ La démarche adoptée est de commencer par une version minimaliste, puis d'amél
68
72
%}
69
73
70
74
71
-
## Données nécessaires pour les différents microservices
75
+
## Données nécessaires pour les différents microservices[⇧](#table-des-matières)
72
76
73
77
### Microservices impliqués
74
78
@@ -98,7 +102,7 @@ Trois microservices sont impliqués :
98
102
L'avantage de cet eppn est qu'il garantit une unicité globale, il est constitué de la concaténation identifiant unique utilisateur + identifiant unique établissement. Exemple : uid@domain-etablissement.fr
99
103
100
104
101
-
## Refactoring du modèle de données
105
+
## Refactoring du modèle de données[⇧](#table-des-matières)
@@ -137,15 +141,16 @@ L'avantage de cet eppn est qu'il garantit une unicité globale, il est constitu
137
141
caption="Modélisation des users dans avenirs-portfolio-api" %}
138
142
<br/>
139
143
140
-
## Architecture possible pour le processus d'alimentation (informatif, non arrêté)
144
+
## Architecture possible pour le processus d'alimentation (informatif, non arrêté)[⇧](#table-des-matières)
141
145
142
146
**Remarque :** le processus d'alimentation n'a pas été complètement implémenté, la réflexion est toujours en cours.
143
147
148
+
### Schéma du processus d'alimentation
144
149
{% include img.html src="assets/images/auth_init_provisioning.svg" alt="Processus d'alimentation" caption="Architecture possible pour le processus d'alimentation" %}
145
150
146
151
<br/>
147
152
148
-
## Intégration avec l'API Manager
153
+
## Intégration avec l'API Manager[⇧](#table-des-matières)
149
154
150
155
### Principe
151
156
On utilise un plugin Apisix de type serverless en LUA qui va :
@@ -160,25 +165,25 @@ On utilise un plugin Apisix de type serverless en LUA qui va :
160
165
- Découpler les microservices.
161
166
- Garantir que la requête traitée par les microservices provient de l'API Manager.
162
167
163
-
### Remarque
168
+
### Remarques
164
169
Il s'agit d'une simplification pour tester l'authentification. Pour le contrôle d'accès, le plugin devra également extraire :
165
170
- La méthode HTTP et le end-point pour déterminer l'action utilisateur.
166
171
- La ressource cible.
167
172
- Possiblement d'autres informations comme l'univers actif.
168
173
169
-
174
+
### Diagramme de séquence
170
175
{% include img.html src="assets/images/apim_auth_first_steps.png" alt="Intégration avec l'API Manager" caption="Intégration avec l'API Manager" %}
171
176
172
177
173
-
## Adaptations du filtre de sécurité au payload transmis par l'API Manager
178
+
## Adaptations du filtre de sécurité au payload transmis par l'API Manager[⇧](#table-des-matières)
174
179
175
180
Le filtre de sécurité est mutualisé [dans la librairie common](https://github.com/avenirs-esr/avenirs-portfolio-common/blob/219dd0a2b59cb13290bbd68963e87f8785669c57/src/main/java/fr/avenirsesr/portfolio/common/security/infrastructure/filter/DevAuthenticationFilter.java){:target="_blank"}.
176
181
177
182
Les adaptations devraient être relativement simples :
178
183
- Adapter [UserSecurityPayload](https://github.com/avenirs-esr/avenirs-portfolio-common/blob/219dd0a2b59cb13290bbd68963e87f8785669c57/src/main/java/fr/avenirsesr/portfolio/common/security/infrastructure/adapter/model/UserSecurityPayload.java){:target="_blank"} pour l'aligner sur le payload transmis par l'API Manager : eppn, category, etc.
179
184
- Adapter le [filtre de sécurité](https://github.com/avenirs-esr/avenirs-portfolio-common/blob/219dd0a2b59cb13290bbd68963e87f8785669c57/src/main/java/fr/avenirsesr/portfolio/common/security/infrastructure/filter/HmacAuthenticationFilter.java#L62){:target="_blank"} pour transmettre le payload au microservice.
180
185
181
-
## Evolutions
186
+
## Evolutions[⇧](#table-des-matières)
182
187
183
188
- Ajouter la landing page d'authentification.
184
189
- Déterminer s'il faut gérer un access token spécifique au portfolio ou s'il vaut mieux utiliser directement celui du provider OIDC.
0 commit comments