Spring Boot 3 Security Tutorial | Authentication and Authorization | [2024]

Поділитися
Вставка
  • Опубліковано 23 лип 2024
  • Become a Spring Boot Security expert with this in-depth tutorial! Dive into essential concepts like authentication, authorization, in-memory user management, database user management, custom error and login screens, dynamic user registration and login, and more.
    This tutorial will guide you to secure your applications with the latest Spring Boot 3.2 (2024 release)!
    📚 Chapters:
    (00:00) Introduction
    (02:05) 1. Configure spring security dependency
    (05:29) 2. Role-based authorization
    (09:51) 3. In-memory user authentication
    (18:13) 4. Database-backed user authentication
    (19:36) 4.1. Create user database table with Spring JPA
    (22:29) 4.2. Connect user table to Spring security
    (29:57) 4.3. Register new users
    (34:22) 4.4. CSRF blocking for post requests
    (38:44) 5. Customize error pages
    (42:43) 6. Customize login screen
    (46:04) 7. Redirect to a specific page after successful login
    (50:38) 8. Comparison of password encoders (BCrypt vs Scrypt vs Argon2 vs PBKDF2)
    (54:22) Conclusion
    Find the project on GitHub: github.com/afsalashyana/Sprin...

КОМЕНТАРІ • 107

  • @GenuineCoder
    @GenuineCoder  3 місяці тому +3

    Part 2 - JWT Authentication with Spring Security: ua-cam.com/video/HYBRBkYtpeo/v-deo.html
    More in-depth Spring Boot courses on the playlist: ua-cam.com/play/PLhs1urmduZ2-W9wfEktEnSYJWrdoLUdOk.html

    • @RK22082
      @RK22082 2 місяці тому

      40:30 To Rename any file from the Intellij Idea, Right Click -> Refactor -> Rename 😊😊😊
      @GenuineCoder ❤❤❤

  • @mekanikoosiraniko3172
    @mekanikoosiraniko3172 20 днів тому +2

    I struggled for 2 weeks on how to use db users for authentication using spring security until I found your video. Kudos to you. The world needs a lot of people like you.

  • @davidxcode
    @davidxcode 5 місяців тому +1

    Thank you for this amazing content!

  • @snakefoxxofekans
    @snakefoxxofekans 2 місяці тому

    amazing video. Thank you!

  • @mehrshin.canada
    @mehrshin.canada 3 місяці тому

    perfect tutorial, I enjoyed watching.

  • @bejkon116
    @bejkon116 6 днів тому

    Very nice tutorial, thank you for this.

  • @BizzaroBrainBoi
    @BizzaroBrainBoi 3 місяці тому

    best ive ever seen. thank you so much.

  • @nahomdiro7818
    @nahomdiro7818 3 місяці тому

    Thank you. very clear I highly recommend this tutorial

  • @user-yt4qy2jo6c
    @user-yt4qy2jo6c 2 місяці тому

    The best tutorial about Spring I've ever seen, thanks

  • @ajitsuryawanshi8809
    @ajitsuryawanshi8809 3 місяці тому +2

    perfect video i am searching for , i really enjoyed it keep uploading like....

  • @callmebean1345
    @callmebean1345 2 місяці тому

    Woa, this tutorial is very good. I really recommend this

  • @aimerninelie2582
    @aimerninelie2582 2 місяці тому

    Thank you very much, it is really helpful

  • @user-gz2by1fq8w
    @user-gz2by1fq8w 3 місяці тому

    You are truly a genuine coder, the video is so precise, i highly recommend this tutorial.

  • @briangicharu2899
    @briangicharu2899 2 місяці тому +2

    This is the best tutorial on Spring auth in UA-cam so far. Thank you very much. I mean its the best. I had to subscribe for more

  • @cheeks_of_the_boreal_valley
    @cheeks_of_the_boreal_valley Місяць тому

    very comprehensive, easy to understand tutorial. Thank you very much

  • @cozitsyash1301
    @cozitsyash1301 Місяць тому

    Great content Sir plz dont stop making such videos Too good thank you !!

  • @antonellopierri961
    @antonellopierri961 5 місяців тому +2

    Extremely interesting tutorial. The comparison between hashing methods was also very helpful. Thank you for sharing this content.

  • @pravinjagtap8467
    @pravinjagtap8467 2 місяці тому

    Great content explained with good pace, it gives time frame to understand new learner. Great Job!!

  • @hakangleissman
    @hakangleissman 2 місяці тому

    Great stuff!

  • @KirillMvS
    @KirillMvS 22 дні тому

    Thank you for the video, it is really good as Spring Security in action:)
    I would appreciate the same video for other relativaly difficult topics for beginners. Subscribed.

  • @khanhpd3129
    @khanhpd3129 4 місяці тому

    Thanks for very helpful article. I research and practice for many article then realize it’s security spring 2. Thanks for ur security spring 3 one more time. Now i can move on another section 🎉 u explain very detail, hope i can see u in another video

  • @shamimahamed8333
    @shamimahamed8333 2 місяці тому

    I have been watching spring security videos for many days, they delivered lecture over 1-2 hours, but your lecture is so clear and easy to understand over this difficult topic, thank you so much sir, for your contribution.

  • @samahmahdi5511
    @samahmahdi5511 2 місяці тому

    Good explanation. Thanks

  • @marvenmalope9504
    @marvenmalope9504 2 місяці тому

    Thank you very much sir👏

  • @indiancitizen6609
    @indiancitizen6609 2 місяці тому +2

    To all who are searching for building a login system using spring security, this is best one I have found. Perfect in all sense. THanks bro. Please do build more videos. You are doing a great job.

    • @_naushad_ahmad
      @_naushad_ahmad Місяць тому

      Hey Bro.
      Have you implemented the code . When i login the page i got bad credentials.

    • @indiancitizen6609
      @indiancitizen6609 Місяць тому

      Either your username or password might be wrong

  • @geordymontenegro6523
    @geordymontenegro6523 3 місяці тому

    NICE VIDEO PERFECT, THANKS FROM COLOMBIA

  • @hiephoang7323
    @hiephoang7323 2 місяці тому

    the great tutorial !

  • @jayakrishnathammana
    @jayakrishnathammana Місяць тому

    Excellent explanation

  • @wilsonvaboum1338
    @wilsonvaboum1338 Місяць тому

    Bravo !!! full explantion

  • @liabasqulizad7962
    @liabasqulizad7962 7 днів тому

    Thank you sir

  • @meilyn22
    @meilyn22 5 місяців тому

    Thank you!

  • @UCSBMNaveenkumar
    @UCSBMNaveenkumar 2 місяці тому +1

    i was try lot of attempt to learn this concept but i con not learned.thanky to your video.🙂

  • @FreaksBane
    @FreaksBane 3 місяці тому

    Nice work

  • @user-gl7js3kz3x
    @user-gl7js3kz3x 18 днів тому

    Thanks so muckh sir

  • @mukhitesenin6376
    @mukhitesenin6376 4 місяці тому

    you are a genuine coder fr)

  • @John-hi8rd
    @John-hi8rd 19 днів тому

    Thank you for the good video. Can you also make a video to enhance your project to add the csrf protection for the system?

  • @rambhaktuchihaobito7987
    @rambhaktuchihaobito7987 2 місяці тому

    Thanku sir..!!

  • @josel9826
    @josel9826 3 місяці тому

    perfect👌🏽

  • @MilsonPazienza
    @MilsonPazienza 4 місяці тому

    very good content...

  • @Donydavid
    @Donydavid 4 місяці тому

    this is good way of teaching with such relaxed explanation . A billion thanks to the tutor i have been using old version of spring security i got confused to align with these new changes.
    kindly do more videos on spingboot and microservices.
    as continuation for this can you make a video on jwt and oauth2

    • @GenuineCoder
      @GenuineCoder  3 місяці тому +1

      Thanks.
      A new tutorial for microservices with real-world video streaming project is now available
      ua-cam.com/video/MrSECdSIaOg/v-deo.html

  • @liqwis9598
    @liqwis9598 2 дні тому +1

    Nice explanation bro , Can you please teach us with OKTA ? as well

  • @MohaideenA
    @MohaideenA 5 місяців тому +2

    Malayali bro :) . I love your slang .❤. from TN

  • @rohitnegi6862
    @rohitnegi6862 3 місяці тому

    this is called Best

  • @meyrambzhusipp7156
    @meyrambzhusipp7156 5 місяців тому

    it’s perfect 😅

  • @cozitsyash1301
    @cozitsyash1301 Місяць тому

    Sir please bring more Spring Boot tutorials and its important topics

  • @viktors.4844
    @viktors.4844 2 місяці тому

    Thank you for great video and very good explanation!
    Can I may one questions? Why we have two instances/beans (lines 32, 69) of one classes MyUserDetailService ?

  • @rahul-java-dev
    @rahul-java-dev Місяць тому

    Thank you so much for the tutorial, I was able to verify credentials from Db, This is the very first time I was able to do it. But one thing, error pages are being shown--- like 403 or 404.htmls, what could be the reason? I am seeing only the default pages provided by Spring.

  • @mekanikoosiraniko3172
    @mekanikoosiraniko3172 19 днів тому

    Hi Guru, can you please give me an instruction on what to add to the codes you created to pass username to the pages that would be accessed by the login user, this would be needed to record created by and modified by . thank you so much again.

  • @panchinrc1993
    @panchinrc1993 Місяць тому

    Great video , so simple to understand, thank you! Greetings from Argentina!
    PD: There is an extension to see colored console messages? Mine it's plain white, thanks!

  • @Religion123_
    @Religion123_ 3 місяці тому

    Perfect people not exists !
    Mr.GC : Are you sure ?
    thank you sir for this content !!

  • @johncarter2338
    @johncarter2338 23 дні тому

    Hi, It's a great video. I am facing a slight problem. My Authentication Success Handler part is not working properly. I have checked the codes but there isn't problem. Is there anything I can do solve this ?

  • @SalgadoMaffini
    @SalgadoMaffini 2 місяці тому

    This was a great help, i was trying to make a register page and it worked; tho i'm having some difficulty trying to give MyUser more attributes, everytime i give them a birth date or an email i can't register them anymore on the DB. I think it has something to do with the UserDetails but don't know how to proceed.

    • @GenuineCoder
      @GenuineCoder  Місяць тому

      What's the error you are getting? Any error messages?

  • @KarolKasperek
    @KarolKasperek 3 місяці тому

    I LOVE YOU

    • @KarolKasperek
      @KarolKasperek 3 місяці тому

      after checking all spring boot website and all of these tutorials with deprecated calsses this video just showed up

  • @Carlosgh059
    @Carlosgh059 2 місяці тому

    you have like, thanks

  • @mekanikoosiraniko3172
    @mekanikoosiraniko3172 18 днів тому

    Hi Sir, Thanks for the video, how can you get the username to the landing page after sucessful login? Thanks.

  • @user-xh5vb7pm6y
    @user-xh5vb7pm6y 2 місяці тому

    Thank you very much.
    But in my case I faced the problem of incorrect redirection after click 'Log in ' button'(nothing happened). I solved it by replacing th:action in custom_login.html to . I use 3.2.5 version of springboot.

  • @kirillpopov3803
    @kirillpopov3803 3 місяці тому

    cool man

  • @jyothig357
    @jyothig357 4 місяці тому

    Hi Sir, I am getting "please sign in" error when i do user registration using postman and as csrf is also disabled. Please suggest any other changes i need to do with spring security 6

  • @aitorzatica4291
    @aitorzatica4291 24 дні тому

    What's the difference with using OAuth2, and when do we have to use each of them?

  • @yadavharssh
    @yadavharssh 2 місяці тому

    great

  • @gajanankanekar9118
    @gajanankanekar9118 4 місяці тому

    TimeStamp 12.19 Sir, UserdetailsService bean showing error asking to add return statement

  • @gajanankanekar9118
    @gajanankanekar9118 4 місяці тому

    timestamp 11.30. Sir, username, password, role all these details are available in the data table. How can we hardcode these details?

  • @lorenzo.
    @lorenzo. 2 місяці тому

    Great tutorial! Clear, chill and great overall tutorial! But I just had a question, how would I go about retrieving the user id?

    • @GenuineCoder
      @GenuineCoder  2 місяці тому +1

      Thanks!
      I believe you want to get all the users and their IDs. This can be done by creating a new GET endpoint.
      For example, at 31:38, you can
      - Create a new GetMapping("/register/get-registered-users") function.
      - Use myUserRepository.findAll() to get all the registered users.
      - Take the username and their ID and return it as the endpoint response.

    • @lorenzo.
      @lorenzo. 2 місяці тому

      @@GenuineCoder Ahh that's what I thought matching the username in the db. Is there no other way of doing this in a controller? Using Principal or something along those lines?

    • @GenuineCoder
      @GenuineCoder  2 місяці тому

      @@lorenzo. I understand your question better now. You want to find the current already logged-in user while accessing an endpoint, right?
      There are multiple ways to do this. For example, on every endpoint function, you can inject a Principal object and get the username from it.
      @GetMapping(value = "/user/get-logged-in-user")
      public String getUsername(Principal principal) {
      return principal.getName();
      }
      Here's a tutorial for this www.baeldung.com/get-user-in-spring-security

  • @Damian64287
    @Damian64287 Місяць тому

    Hi! Thank you very, very much. How to get such cool world web icons for @RestController methods? :)

    • @GenuineCoder
      @GenuineCoder  Місяць тому

      I believe they come with the IntelliJ Ultimate edition. You can try IntelliJ Ultimate trial for free to checkout the latest spring and spring boot features.

  • @naveenkumarreddybadduri7775
    @naveenkumarreddybadduri7775 Місяць тому

    God

  • @peshutanpavri1599
    @peshutanpavri1599 4 місяці тому

    This is an excellent video, and it was a very good revision for me as I have not used this for a while.
    I have two questions if I may please:
    1) when using Spring Boot as a Rest API, when I am only returning JSON, and i have a seperate front-end, I was having issues with filters, and I had to implement my own authentication end point in a controller, is this normal ? How to use filters with REST API?
    2) Is it possible to use HandlerInterceptor instead of filters ?
    OMG, at 47:38, look at the names of those classes, no wonder so many people are turned off by Java code, I love Java, but these names are awful

    • @GenuineCoder
      @GenuineCoder  4 місяці тому +1

      1. Using filters to do manual authentication (using credentials as request parameters OR request headers) is possible. But, it is not recommended. Because, login session management (allowing subsequent requests after login) becomes hard. Also, this is not safe as per industry standards. Better will be to do it via username-password authentication using Spring security or use OAuth and JWT tokens.
      2). You can use HandlerInterceptor for this requirement. The difference is, filters work at the servlet level and HandlerInterceptor work at the Spring MVC level. So, HandleInterceptor can handle spring context as well. Here is a good comparison stackoverflow.com/a/71227949/4889711

    • @peshutanpavri1599
      @peshutanpavri1599 4 місяці тому

      Thank you very much@@GenuineCoder

  • @zairenninofranco3927
    @zairenninofranco3927 3 місяці тому

    What about for the maven 😢 i have a hard time fixing the dependency since it uses javas and springboot 3 is using jakartae

    • @GenuineCoder
      @GenuineCoder  3 місяці тому

      I prefer Gradle over Maven due to its more readable syntax, whereas Maven's XML configuration can be overwhelming.
      What specific challenge or problem are you experiencing with Jakarta EE, and is it related to upgrading from Spring Boot 2.X to 3.X?

  • @ahmedelkelany1884
    @ahmedelkelany1884 3 місяці тому

    i have a question how 403 and 404 error page appears without mapping it or without adding GlobalErrorHandler ?

    • @GenuineCoder
      @GenuineCoder  3 місяці тому

      This is a special feature. Without any java side configuration, you can customize the error pages for specific error codes directly from resources.
      "You can also customize the error pages by adding files with names like error.html, 404.html, etc., in the src/main/resources/public/error directory. The file name should match the HTTP status code you want to handle."

  • @varunpareek7020
    @varunpareek7020 Місяць тому

    Hi sir I am getting Access to local host was denied error
    Do you know how can it be resolved!??

    • @GenuineCoder
      @GenuineCoder  Місяць тому

      Hi, Are you not able to access localhost on browser? If so, double check your spring boot server port.

  • @indiancitizen6609
    @indiancitizen6609 2 місяці тому

    bro. Your accent looks very similar to mine.

  • @malekhmaissy
    @malekhmaissy 4 місяці тому

    is this doable with mongodb database or it necessites a rational database?

    • @GenuineCoder
      @GenuineCoder  4 місяці тому

      It is doable in any database, including MongoDB. For MongoDB, instead of using Spring Data JPA, Spring Data MongoDB should be used.

  • @nikhil4yourhelp670
    @nikhil4yourhelp670 Місяць тому

    can we use Roles as enum it look simple

    • @GenuineCoder
      @GenuineCoder  Місяць тому +1

      ENUM is a great idea! Handling role as an enum is definitely possible, and I think is better.

  • @vijayakumarsk
    @vijayakumarsk 5 місяців тому +1

    Please put the actual code of the project into any repo as well

    • @GenuineCoder
      @GenuineCoder  5 місяців тому

      Thanks for the suggestion. Here is the repo link github.com/afsalashyana/Spring-Boot-Tutorials/tree/master/LearnSpringSecurity

  • @razek1998
    @razek1998 4 місяці тому

    How to handle the situation of invalid credentials?

    • @GenuineCoder
      @GenuineCoder  4 місяці тому +1

      You can use an "AuthenticationFailureHandler" to handle the invalid credentials. Using this, it is possible to provide customized error messages or even redirect the user to specific error pages.
      Reference: www.codejava.net/frameworks/spring-boot/spring-security-authentication-failure-handler-examples

    • @razek1998
      @razek1998 4 місяці тому +1

      @@GenuineCoder thank you brother 🙏

  • @Krishnadevaraya1
    @Krishnadevaraya1 Місяць тому

    bro from kerala

    • @GenuineCoder
      @GenuineCoder  Місяць тому

      അതെ.

    • @Krishnadevaraya1
      @Krishnadevaraya1 Місяць тому

      @@GenuineCoder basically iam from A.P I find you from Kerala by your slang

  • @aleksandrnikolaev2914
    @aleksandrnikolaev2914 3 місяці тому

    Where is the logic? You showed how to register a user in the database via the rest api, but did not show how to then log in to the server via the rest api by entering the username and password Postman. Because of this, a fairly good tutorial became a waste of time.

  • @sabinsesumariyan3687
    @sabinsesumariyan3687 3 місяці тому

    he is malayali (from tamilanadu)