J'ai implémenté Ouath2 comme sécurité pour mes contrôleurs Spring Boot Rest. Avant que l'une de mes ressources ne soit appelée, oauth2 valide le jeton pour les utilisateurs dans la table des utilisateurs. Ma question est de savoir comment éviter une situation où si le jeton user1 est dans la demande et que le corps de la demande contient des données pour la modification de l'utilisateur2? Je dois mettre un contrôle de telle sorte que User1 avec son token puisse modifier les données uniquement pour lui-même. Si user1 avec son toekn a des données user2 dans le corps de la requête, il faut lancer 403.
Je me demandais si je pouvais obtenir le nom d'utilisateur du jeton au niveau de la couche de service pour faire cette vérification? Toute aide appréciée
Vous utilisez Spring Security pour l'authentification.
Vous pouvez obtenir les détails de l'utilisateur à partir de SecurityContext
Authentication authentication = SecurityContextHolder.getContext()
.getAuthentication();
UserDetails userDetail = authentication.getPrincipal();
userDetail.getUsername();
ou dans Rest Controller
@RequestMapping(value = "/username", method = RequestMethod.GET)
public String currentUserName(Principal principal) {
return principal.getName();
}
ou
@RequestMapping(value = "/username", method = RequestMethod.GET)
public String currentUserName(HttpServletRequest request) {
Principal principal = request.getUserPrincipal();
return principal.getName();
}
Cet article est collecté sur Internet, veuillez indiquer la source lors de la réimpression.
En cas d'infraction, veuillez [email protected] Supprimer.
laisse moi dire quelques mots