[JAVA] Comment obtenir les informations d'identification Keycloak dans la classe d'intercepteur

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

Comment obtenir les informations d'identification Keycloak dans la classe d'intercepteur
Comment obtenir une classe depuis Element en Java
Comment obtenir des paramètres dans Spark
Comment obtenir le nom d'une classe / méthode exécutée en Java
Comment obtenir la date avec Java
Comment ajouter conditionnellement une classe html.erb dans Rails
Comment obtenir des informations sur les tables associées dans les tables plusieurs-à-plusieurs
Comment utiliser la classe Java
Comment obtenir le nom de classe de l'argument de LoggerFactory.getLogger lors de l'utilisation de SLF4J en Java
Comment obtenir des valeurs en temps réel avec TextWatcher (Android)
Mappage à une classe avec un objet de valeur dans How to My Batis
Comment trouver May'n dans XPath
Comment utiliser HttpClient de Java (Get)
Comment masquer la barre de défilement dans WebView
Comment démarrer avec Slim
Comment exécuter JUnit dans Eclipse
Comment itérer indéfiniment en Ruby
Comment exécuter Ant dans Gradle
Comment maîtriser la programmation en 3 mois
Comment désassembler un fichier de classe Java
Comment utiliser la classe wrapper
Comment apprendre JAVA en 7 jours
Comment installer Bootstrap dans Ruby
Comment décompiler un fichier de classe Java
Comment utiliser InjectorHolder dans OpenAM
Comment utiliser les méthodes de classe [Java]
Comment installer jQuery dans Rails 6
Comment utiliser les classes en Java?
Comment nommer des variables en Java
Comment définir Lombok dans Eclipse
[Java] Comment utiliser la classe Math
Comment concaténer des chaînes avec Java
Comment installer Swiper in Rails
Comment obtenir l'identifiant de la clé PRIMAY incrémentée automatiquement dans MyBatis
Comment obtenir la valeur de boolean avec jQuery sous forme simple de rails
Comment obtenir et ajouter des données depuis Firebase Firestore dans Ruby
(Spring-data-jpa) Comment obtenir POJO (autre que la classe d'entité) à l'aide de JPA2.1
Comment penser la conception de classe (division) dans un système d'entreprise (1)
Comment obtenir la longueur d'un fichier audio avec Java
Comment installer confortablement JDK 11 dans votre Mac
[swift5] Comment spécifier la couleur en hexadécimal
Comment implémenter la fonctionnalité de recherche dans Rails
Comment implémenter le calcul de la date en Java
Comment implémenter le filtre de Kalman par Java
Prise en charge multilingue de Java Comment utiliser les paramètres régionaux
Comment changer le nom de l'application dans les rails
[Java] Comment utiliser la classe File
[Kotlin] Trois façons d'obtenir un cours depuis KClass
Comment utiliser le volume nommé dans docker-compose.yml
Comment filtrer JUnit Test dans Gradle
Comment insérer une vidéo dans Rails
Comment normaliser le pied de page d'en-tête dans Thymeleaf
Comment inclure Spring Tool dans Eclipse 4.6.3?
[Note] Comment démarrer avec Rspec