Comparaison des versions

Légende

  • Ces lignes ont été ajoutées. Ce mot a été ajouté.
  • Ces lignes ont été supprimées. Ce mot a été supprimé.
  • La mise en forme a été modifiée.

Modèle de contrôle d’accès

...

Type

Spécification

Code (Exemple)

@SecuredAction()

Permission d’accès à une procédure métier exposée sur une API (ex. les enseignants ont le droit de créer des devoirs dans le cahier de textes)

Bloc de code
languagejava
    @Get("/export/verify")
	@SecuredAction(value = "", type = ActionType.AUTHENTICATED)
	public void verifyUserExport(final HttpServerRequest request){
		UserUtils.getUserInfos(eb, request, user -> {
			if(user != null) {
				exportService.userExportExists(user, new Handler<Boolean>(){
					@Override
					public void handle(Boolean exists){ 						renderJson(request, new JsonObject().put("exists", exists.booleanValue()));
					}
				});
			}
			else {
				unauthorized(request);
			}
		});
	}

@ResourceFilter()

Partage d’accès à une ressource (consultation, commentaire, modification,gestion)

Bloc de code
languagejava
    @Get("/monitoring/versions")
    @SecuredAction(value = "",  type = ActionType.RESOURCE)
    @ResourceFilter(AdminFilter.class)
    public void checkVersions(final HttpServerRequest request) {
        final JsonArray versions = new fr.wseduc.webutils.collections.JsonArray();
        LocalMap<String, String> versionMap = vertx.sharedData().getLocalMap("versions");
        for (Map.Entry<String,String> entry : versionMap.entrySet()) {
            versions.add(new JsonObject().put(entry.getKey(),
entry.getValue()));
        }
        Renders.renderJson(request, versions);
    }

@MfaProtected()

Authentification à deux facteurs (MFA) : L'authentification à deux facteurs est un mécanisme de sécurité qui exige non seulement un mot de passe (ou une autre forme d'identification), mais aussi une deuxième forme d'authentification, souvent quelque chose que l'utilisateur possède physiquement, comme un téléphone dans notre cas.

L'annotation @MfaProtected() est utilisée pour définir un filtre supplémentaire sur les points d'accès (endpoints) d'une application ou d'une API. Cela signifie que l'accès à ces points d'accès sera restreint et nécessitera une authentification à deux facteurs.

Bloc de code
languagejava
    @Put("/group/:groupId/users/delete")
    @SecuredAction(value = "", type = ActionType.RESOURCE)
    @ResourceFilter(AdminFilter.class)
    @MfaProtected()
    public void removeUsers(final HttpServerRequest request) {
        final String groupId = request.params().get("groupId");
        if (groupId != null && !groupId.trim().isEmpty()) {
            bodyToJson(request, new Handler<JsonObject>() {
                @Override
   
            public void handle(JsonObject body) {
                    final JsonArray userIds = body.getJsonArray("userIds");
                    groupService.removeUsers(groupId, userIds, 
                    defaultResponseHandler(request));
                }
            });
        }
    }

  • @SecuredAction(type = ActionType.XXXXXXXX, value = "") : Cette annotation est la plus important elle doit être ajouter sur toute route qui nécessite un sécurisation sans elle autres annotation de sécurité ne sont pas active.

    • ActionType.RESOURCE : Il s’agit du type de sécurisation appliqué sur la route.

      • WORKFLOW : Cet ActionType est activé par défaut, même sans spécifier la valeur ActionType. Il applique la sécurisation définie dans la console d'administration.

      • RESOURCE : il permet le partage d’accès à une ressource il s'applique obligatoirement lorsqu'on utilise @ResourceFilter qui lui défini le scope des utilisateurs ayant accès a une ressource ou @MfaProtected() qui ajoute un couche de sécurisation afin de permettre le déclenchement des filtres dans le traitement des requêtes.

      • AUTHENTICATED : Il permet de vérifier la présence des cookies de connexion ainsi que l'état de connexion de l'utilisateur.

...