Séparez l'authentification de l'autorisation, puis choisissez un modèle : le contrôle d'accès par rôles est simple et fonctionne quand les permissions se regroupent en une poignée de rôles, tandis que des règles par attributs conviennent aux conditions sur la ressource, comme le propriétaire, l'équipe ou le forfait. Appliquez-le à un seul endroit, idéalement une couche de politique que les gestionnaires appellent, gardez les vérifications près des données pour qu'une requête ne puisse pas fuiter de lignes, et journalisez chaque décision pour l'audit.
Pourquoi les recruteurs posent cette question
Le recruteur vérifie si vous parsèmeriez des if dans les contrôleurs ou si vous concevriez quelque chose de relisible. Il veut entendre parler de centralisation de la politique, de refus par défaut, et du bug classique d'autorisation au niveau objet où un endpoint vérifie que l'utilisateur est connecté mais pas que l'enregistrement lui appartient. Le multi-tenant rend la question plus tranchante, puisqu'un filtre manquant fuit les données d'un autre client.
Comment structurer votre réponse
- Séparez explicitement authentification et autorisation.
- Choisissez un modèle et justifiez-le par la façon dont les permissions se regroupent réellement.
- Mettez l'application dans une seule couche, avec un refus par défaut.
- Traitez les vérifications au niveau objet et l'auditabilité.
Exemple de réponse
L'authentification répond à qui vous êtes et se fait une fois en périphérie ; l'autorisation répond à ce que vous pouvez faire et se fait à chaque requête sur une ressource précise. Pour le modèle, je commence par les rôles parce qu'ils sont faciles à raisonner et faciles à expliquer au support, puis j'ajoute des conditions par attributs là où les rôles seuls ne suffisent pas, des choses comme cet utilisateur est sur le forfait qui inclut les exports, ou cet enregistrement appartient à son équipe. Ce qui compte plus que le modèle, c'est qu'il y ait exactement un endroit qui décide. Je veux une fonction de politique par type de ressource que les gestionnaires appellent, avec refus par défaut, pour qu'un nouvel endpoint qui oublie la vérification soit une omission visible plutôt qu'un trou silencieux. Pour tout ce qui est multi-tenant, je pousse aussi le filtre de tenant dans la couche de données pour qu'une requête ne puisse physiquement pas renvoyer les lignes d'un autre tenant, parce que compter sur chaque développeur pour se souvenir d'une clause where finit toujours par échouer. Et chaque décision est journalisée avec le sujet, la ressource et le résultat, puisque la première question dans tout incident est qui pouvait voir quoi.
Vous passez cet entretien bientôt ? GhostPilot écoute votre appel en direct, repère la question dès qu'elle est posée et affiche une réponse structurée à l'écran en temps réel. Essayez-le lors de votre prochain entretien blanc, ou prenez un Session Pass à $29, sans abonnement, pour le jour J.
Voir comment ça marcheQuestions de relance à prévoir
- Qu'est-ce que l'autorisation cassée au niveau objet, et comment la testez-vous ?
- Comment géreriez-vous des permissions configurables par un administrateur client ?
- Où mettez-vous en cache les décisions d'autorisation sans qu'elles deviennent périmées ?
Autres questions pour Développeur backend
Votre recruteur posera sa propre version de celle-ci. Collez votre véritable fiche de poste dans le Question Predictor gratuit et obtenez les 20 questions que ce poste a le plus de chances de poser, avec ce que chacune cherche vraiment à sonder.
Prédire mes questions