Lors d'une demande à l'API avec les informations d'identification de l'utilisateur issues de l'authentification Keycloak Depuis l'intercepteur avant que la méthode de la classe de contrôleur soit appelée Notez que j'ai eu du mal à ne pas savoir qu'il existe une méthode getUserPrincipal () pour obtenir des informations utilisateur.
intercepterTestClass.java
@Autowired
private UserDto userDto;
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
//
//Si vous n'avez pas vos identifiants
if (request.getUserPrincipal() == null) {
System.out.println("Paramètre factice car il n'y a pas d'informations d'authentification");
userDto.setUserid("U0001");
userDto.setUserName("guest");
return true;
}
//
final KeycloakSecurityContext context = KeycloakPrincipal.class.cast(request.getUserPrincipal()).getKeycloakSecurityContext();
userDto.setUserName(context.getToken().getPreferredUsername());
userDto.setUserId(String.valueOf(context.getToken().getOtherClaims().get("user_id")));
//
return true;
Voir un autre article pour la mise en œuvre de l'authentification keycloak. En obtenant les informations d'identification à l'intercepteur La polyvalence s'est améliorée car il n'est plus nécessaire de la décrire dans chaque classe de contrôleur. Jusqu'à présent, je n'ai utilisé que Spring Security comme fonction d'authentification, Spring Security ne semble pas très adapté à l'implémentation d'API.
Recommended Posts