[JAVA] So erhalten Sie Keycloak-Anmeldeinformationen in der Interceptor-Klasse

Wenn Sie eine Anfrage an die API mit den Anmeldeinformationen des Benutzers aus der Keycloak-Authentifizierung stellen Vom Intercepter vor wird die Methode der Controller-Klasse aufgerufen Beachten Sie, dass es mir schwer fiel, nicht zu wissen, dass es eine getUserPrincipal () -Methode gibt, um Benutzerinformationen abzurufen.

intercepterTestClass.java



  @Autowired
  private UserDto userDto;

  @Override
  public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
      throws Exception {
    //

    //Wenn Sie nicht über Ihre Anmeldeinformationen verfügen
    if (request.getUserPrincipal() == null) {
      System.out.println("Dummy-Einstellung, da keine Authentifizierungsinformationen vorhanden sind");
      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;

Weitere Informationen zur Implementierung der Keycloak-Authentifizierung finden Sie in einem anderen Artikel. Indem Sie die Anmeldeinformationen beim Abfangjäger abrufen Die Vielseitigkeit hat sich verbessert, da sie nicht mehr in jeder Controller-Klasse beschrieben werden muss. Bisher habe ich Spring Security nur als Authentifizierungsfunktion verwendet. Spring Security scheint für die API-Implementierung nicht sehr geeignet zu sein.

Recommended Posts

So erhalten Sie Keycloak-Anmeldeinformationen in der Interceptor-Klasse
So erhalten Sie eine Klasse von Element in Java
So erhalten Sie Parameter in Spark
So erhalten Sie den Namen einer Klasse / Methode, die in Java ausgeführt wird
So erhalten Sie das Datum mit Java
So fügen Sie die html.erb-Klasse in Rails bedingt hinzu
So erhalten Sie Informationen zu zugeordneten Tabellen in vielen-zu-vielen-Tabellen
Verwendung der Java-Klasse
So erhalten Sie den Klassennamen des Arguments von LoggerFactory.getLogger, wenn Sie SLF4J in Java verwenden
So erhalten Sie Werte in Echtzeit mit TextWatcher (Android)
Zuordnung zu einer Klasse mit einem Wertobjekt in How to My Batis
So finden Sie May'n in XPath
Verwendung von HttpClient (Get) von Java
So blenden Sie die Bildlaufleiste in WebView aus
Wie fange ich mit schlank an?
So führen Sie JUnit in Eclipse aus
Wie man in Ruby auf unbestimmte Zeit iteriert
Wie man Ant in Gradle ausführt
Wie man die Programmierung in 3 Monaten beherrscht
So zerlegen Sie eine Java-Klassendatei
Verwendung der Wrapper-Klasse
Wie man JAVA in 7 Tagen lernt
So installieren Sie Bootstrap in Ruby
So dekompilieren Sie eine Java-Klassendatei
Verwendung von InjectorHolder in OpenAM
Verwendung von Klassenmethoden [Java]
So installieren Sie jQuery in Rails 6
Wie verwende ich Klassen in Java?
So benennen Sie Variablen in Java
So setzen Sie Lombok in Eclipse
[Java] Verwendung der Math-Klasse
So verketten Sie Zeichenfolgen mit Java
So installieren Sie Swiper in Rails
So erhalten Sie die ID des automatisch inkrementierten PRIMAY-Schlüssels in MyBatis
So erhalten Sie den Wert von Boolean mit jQuery in einfacher Rails-Form
Abrufen und Hinzufügen von Daten aus dem Firebase Firestore in Ruby
(Spring-data-jpa) So erhalten Sie POJO (außer Entitätsklasse) mit JPA2.1
Wie man über Klassengestaltung (Division) in einem Geschäftssystem nachdenkt (1)
So ermitteln Sie die Länge einer Audiodatei mit Java
So bringen Sie JDK 11 bequem in den Mac
[swift5] So legen Sie die Farbe hexadezimal fest
So implementieren Sie Suchfunktionen in Rails
So implementieren Sie die Datumsberechnung in Java
So implementieren Sie den Kalman-Filter mit Java
Mehrsprachige Unterstützung für Java Verwendung des Gebietsschemas
So ändern Sie den App-Namen in Rails
[Java] Verwendung der File-Klasse
[Kotlin] Drei Möglichkeiten, um Klasse von KClass zu bekommen
Verwendung des benannten Volumes in docker-compose.yml
So filtern Sie den JUnit-Test in Gradle
So fügen Sie ein Video in Rails ein
So standardisieren Sie die Kopfzeile in Thymeleaf
Wie kann ich Spring Tool in Eclipse 4.6.3 einbinden?
[Hinweis] Erste Schritte mit Rspec