REST-API absichern mit JWTs und Spring Security - Java und Spring Boot Tutorial Deutsch

แชร์
ฝัง
  • เผยแพร่เมื่อ 6 ม.ค. 2025

ความคิดเห็น • 22

  • @TheBlockMonsterLp
    @TheBlockMonsterLp 2 ปีที่แล้ว +1

    Ist die benutzte JWT-Lib nicht etwas veraltet und mit möglicher Gefahren verbunden?

    • @NoelLang
      @NoelLang  2 ปีที่แล้ว +2

      Da hast du recht! Gut aufgepasst, die Version ist tatsächlich ein wenig veraltet. Korrekt wäre die jjwt-api der Version 0.11.2 (Stand jetzt). Siehe github.com/jwtk/jjwt
      Danke für den Hinweis :)

    • @407wrld3
      @407wrld3 2 ปีที่แล้ว +1

      @@NoelLang Bei der Version verändert sich aber auch dann die API, Intellij wird darauf aber hinweisen und ist relativ einfach das zu ändern. Nur anstatt eines Strings muss nun ein Key/SecretKey Objekt übergeben werden.

  • @sheldoriassoso4605
    @sheldoriassoso4605 2 ปีที่แล้ว +1

    Super Video, genau richtig für Beginner, die sich vorher noch gar nicht mit Authentifizierung auseinandergesetzt haben und einen Startpunkt suchen.

    • @NoelLang
      @NoelLang  2 ปีที่แล้ว

      Danke für dein Feedback! :)

  • @davidweber9445
    @davidweber9445 2 ปีที่แล้ว +1

    Wirklich gutes Zeug, ohne Quatsch.

    • @NoelLang
      @NoelLang  2 ปีที่แล้ว

      Danke dir!

  • @toniweber7495
    @toniweber7495 3 ปีที่แล้ว

    Ich habe gute Javakenntnisse. Bisher habe ich mir meine MySQL Queries alle selbst zusammengebastelt... Was ja auch funktioniert. Nun bin ich auf OpenAPI gestoßen und habe auch schonmal was von Hibernate gehört... Dass das alles SO EINFACH geht, habe ich nicht erwartet ;) Es ist echt bemerkenswert, was alles geht und vor allem, dass man sich auf das eigentliche Projekt konzentrieren kann... Die fertige API dann noch in einem Docker Container und los gehts ;) Danke für das gute Tutorial... Ich werde mir doch mal einen Kurs mit Spring Boot zulegen, wenn sie wieder im Sale sind...

  • @L4st_HuM4n
    @L4st_HuM4n 3 ปีที่แล้ว

    Beim Verfolgen dieses Tutorials habe ich einen Knoten reinbekommen. Ich bin bisher davon ausgegangen, dass man beim Erstellen des JWT Tokens zunächst den Nutzer mit seinem Username und Password authentifiziert, den Token erstellt, welcher nun als Ersatz für die Datenbank genutzt werden kann. Wenn ich also einen Token bekomme, diesen erfolgreich parse, so würde ich davon ausgehen, dass der Username im Token legitim ist und ich die in den Claims kodierten Authorities so verwenden kann. Warum hast du hier 18:38 Zeile 31 die Datenbank bemüht? Wäre das nicht redundant?

  • @MatthiasB-i5q
    @MatthiasB-i5q ปีที่แล้ว

    Bei 11:00 kopierst du die Exceptions für den Try-Catch Block rein. Wie hast du das gemacht?

    • @NoelLang
      @NoelLang  ปีที่แล้ว

      Bei IntelliJ kannst du mit "Alt + Eingabe" Klassen importieren :)

  • @DesertCookie
    @DesertCookie ปีที่แล้ว +1

    Welchen Hintergrund hat die Nutzung eines extra Objekts als @RequestBody (hier AuthRequest), anstatt direkt nach zwei Strings (email, password) zu fragen, wie dies beispielsweise in Springs eigenem Tutorial der Fall ist? Die Konsequenz wäre ja, für jede Anfragekombination, wenn eine neue Ressource angelegt wird, ein eigenes Objekt wie AuthRequest zu schreiben, oder?
    Die Nutzung von ResponseEntity vertehe ich - hier scheint mir der Vorteil einer einfacheren Arbeit mit JSON sehr direkt offensichtlich.

  • @Chrizzonator
    @Chrizzonator 2 ปีที่แล้ว +2

    Hi. Danke für das tolle Tutorial. Man findet ja selten jemanden auf deutsch :) Find ich klasse mach weiter so!

    • @NoelLang
      @NoelLang  2 ปีที่แล้ว +1

      Insomnia ist ein wenig leichtgewichtiger, kann nicht unbedingt mehr, ist aber dafür nicht so vollgepackt. Ist mein Tool der Wahl, wenn ich einfach mal paar Requests schicken möchte :)

  • @thorbenklyn3065
    @thorbenklyn3065 2 ปีที่แล้ว +1

    Hier ein interessanter Post, warum es vermieeden werden sollte @Data für Entities zu verwenden.
    TLDR:
    JPA Specification sagt du brauchst ein no-argument constructor, @Data erzeugt aber nur einen @RequiredArgsConstructor
    equals()/hashCode()/toString() laden alle felder und können versehentlich lazy attributes nachladen. Sprich ein @OneToMany kann alle Entitäten aus der DB nachladen.
    Entities sind mutable, da selbst die ID oft erst nach dem erstellen der entity gesetzt wird (von DB). Dadurch existieren u.U. keine verlässlichen Felder zur Berechnung eines Hashes
    Ansonsten gutes Tutorial 👍

    • @NoelLang
      @NoelLang  2 ปีที่แล้ว

      Hey, danke dir für den wichtigen Hinweis! Würde es auch gerne anpinnen, aber lasse lieber mal die veraltete Lib stehen. :D
      Hatte ich so nicht im Kopf, dass @Data keinen no-args-constructor erstellt - wieder was gelernt!

  • @DKRSpeedline
    @DKRSpeedline 2 ปีที่แล้ว +1

    Hi, vielen Dank für das super Video! Das ist wirklich sehr verständlich und nachvollziehbar! Du gibst ca. bei Minute 9 an, dass die Ablaufzeit realitätsfern ist. Was wäre denn aus deiner Sicht eine sinnvolle Zeit für den Ablauf des Tokens? Gruß Daniel
    Edit: Ich würde sagen der WebSecurityConfigurerAdapter ist ebenfalls veraltet.

  • @mars3142
    @mars3142 2 ปีที่แล้ว

    Diese JWT Tutorials gehen alle immer einen Schritt zu kurz. Bei einem Microservice ist das alles perfekt, aber wie verhält es sich, sobald man ein Mix aus mehreren Microservices hat. Muss ich diesen Code in jeden Service einbauen oder was wäre die bessere Lösung für eine Enterprise Application?
    In meinen Augen, sollte das API Gateway eigentlich diese Prüfung machen und nur valide JWTs weiterleiten, aber wie verhält es sich dann mit Private/Public Keys für das Secret, also z.B. RSA? Und diese müssen natürlich auch rotieren. Dafür gibt es im JWT Header ein kid (KeyID) Feld, welches die Version sein könnte. Hier wäre ein etwas ausführlicheres Tutorial wirklich super.

  • @FrissOderLassEs
    @FrissOderLassEs 2 ปีที่แล้ว

    Jay-Wieh-Tay ... genau... Heartly luckwish, your languageknowledge is the yellow from the egg