{"id":32987,"date":"2024-11-01T09:12:56","date_gmt":"2024-11-01T09:12:56","guid":{"rendered":"http:\/\/atmokpo.com\/w\/?p=32987"},"modified":"2024-11-01T11:29:29","modified_gmt":"2024-11-01T11:29:29","slug":"spring-boot-backend-development-course-implementing-login-and-logout-with-jwt-prerequisites-token-based-authentication","status":"publish","type":"post","link":"https:\/\/atmokpo.com\/w\/32987\/","title":{"rendered":"Spring Boot Backend Development Course, Implementing Login and Logout with JWT, Prerequisites Token-based Authentication"},"content":{"rendered":"<p><body><\/p>\n<p>In this course, we will delve deeply into how to implement login and logout functionality based on <strong>JWT<\/strong> (JSON Web Token) using <strong>Spring Boot<\/strong>. This article explains the basic concepts of JWT and how to utilize JWT in Spring Boot. Furthermore, we will start with the necessary prerequisites and development environment setup, aiming to enhance understanding through actual code examples.<\/p>\n<h2>1. Prerequisites: Token-Based Authentication<\/h2>\n<p>Token-based authentication is a technology that provides a reliable authentication method between a server and a client by converting user authentication information into a token. Unlike traditional session-based authentication, this approach is advantageous for scaling as the backend server does not need to maintain the user&#8217;s state. JSON Web Token is a widely used standard in such token-based authentication.<\/p>\n<h3>1.1 What is JWT?<\/h3>\n<p>JWT is a token that contains information encoded in JSON format, primarily used for user authentication and information transmission procedures. JWT is divided into three parts:<\/p>\n<ol>\n<li><strong>Header<\/strong>: Specifies the type of token and the hashing algorithm.<\/li>\n<li><strong>Payload<\/strong>: Contains user information and additional claims (e.g., expiration time).<\/li>\n<li><strong>Signature<\/strong>: Generated by combining the Header and Payload and hashing them with a secret key.<\/li>\n<\/ol>\n<p>An example of a JWT is as follows:<\/p>\n<pre>\neyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c\n<\/pre>\n<h3>1.2 Advantages of JWT<\/h3>\n<ul>\n<li><strong>Statelessness:<\/strong> The server does not need to maintain sessions.<\/li>\n<li><strong>Cross-Domain Authentication:<\/strong> Authentication information can be stored on the client, making it usable across various clients.<\/li>\n<li><strong>Security:<\/strong> Capable of encryption and signing on its own.<\/li>\n<\/ul>\n<h2>2. Environment Setup<\/h2>\n<p>To use Spring Boot, prepare the following items.<\/p>\n<h3>2.1 Development Tool Setup<\/h3>\n<ol>\n<li>Install Java Development Kit (JDK) version 17 or higher.<\/li>\n<li>Create a project using Spring Initializr (adding web, security, JPA, and Lombok dependencies).<\/li>\n<li>Install an IDE (IntelliJ IDEA or Eclipse).<\/li>\n<\/ol>\n<h3>2.2 Project Structure<\/h3>\n<pre>\nsrc\n\u251c\u2500\u2500 main\n\u2502   \u251c\u2500\u2500 java\n\u2502   \u2502   \u2514\u2500\u2500 com\n\u2502   \u2502       \u2514\u2500\u2500 example\n\u2502   \u2502           \u2514\u2500\u2500 jwt\n\u2502   \u2502               \u251c\u2500\u2500 JwtApplication.java\n\u2502   \u2502               \u251c\u2500\u2500 controller\n\u2502   \u2502               \u2502   \u2514\u2500\u2500 AuthController.java\n\u2502   \u2502               \u251c\u2500\u2500 dto\n\u2502   \u2502               \u2502   \u2514\u2500\u2500 AuthRequest.java\n\u2502   \u2502               \u251c\u2500\u2500 security\n\u2502   \u2502               \u2502   \u251c\u2500\u2500 JwtRequestFilter.java\n\u2502   \u2502               \u2502   \u2514\u2500\u2500 JwtUtil.java\n\u2502   \u2502               \u2514\u2500\u2500 service\n\u2502   \u2502                   \u2514\u2500\u2500 UserService.java\n\u2502   \u2514\u2500\u2500 resources\n\u2502       \u2514\u2500\u2500 application.properties\n\u2514\u2500\u2500 test\n<\/pre>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In this course, we will delve deeply into how to implement login and logout functionality based on JWT (JSON Web Token) using Spring Boot. This article explains the basic concepts of JWT and how to utilize JWT in Spring Boot. Furthermore, we will start with the necessary prerequisites and development environment setup, aiming to enhance &hellip; <a href=\"https:\/\/atmokpo.com\/w\/32987\/\" class=\"more-link\">\ub354 \ubcf4\uae30<span class=\"screen-reader-text\"> &#8220;Spring Boot Backend Development Course, Implementing Login and Logout with JWT, Prerequisites Token-based Authentication&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[131],"tags":[],"class_list":["post-32987","post","type-post","status-publish","format-standard","hentry","category-spring-boot-backend-development"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.2 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Spring Boot Backend Development Course, Implementing Login and Logout with JWT, Prerequisites Token-based Authentication - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/atmokpo.com\/w\/32987\/\" \/>\n<meta property=\"og:locale\" content=\"ko_KR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Spring Boot Backend Development Course, Implementing Login and Logout with JWT, Prerequisites Token-based Authentication - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"og:description\" content=\"In this course, we will delve deeply into how to implement login and logout functionality based on JWT (JSON Web Token) using Spring Boot. This article explains the basic concepts of JWT and how to utilize JWT in Spring Boot. Furthermore, we will start with the necessary prerequisites and development environment setup, aiming to enhance &hellip; \ub354 \ubcf4\uae30 &quot;Spring Boot Backend Development Course, Implementing Login and Logout with JWT, Prerequisites Token-based Authentication&quot;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/atmokpo.com\/w\/32987\/\" \/>\n<meta property=\"og:site_name\" content=\"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"article:published_time\" content=\"2024-11-01T09:12:56+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-11-01T11:29:29+00:00\" \/>\n<meta name=\"author\" content=\"root\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@bebubo4\" \/>\n<meta name=\"twitter:site\" content=\"@bebubo4\" \/>\n<meta name=\"twitter:label1\" content=\"\uae00\uc4f4\uc774\" \/>\n\t<meta name=\"twitter:data1\" content=\"root\" \/>\n\t<meta name=\"twitter:label2\" content=\"\uc608\uc0c1 \ub418\ub294 \ud310\ub3c5 \uc2dc\uac04\" \/>\n\t<meta name=\"twitter:data2\" content=\"2\ubd84\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/atmokpo.com\/w\/32987\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/32987\/\"},\"author\":{\"name\":\"root\",\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7\"},\"headline\":\"Spring Boot Backend Development Course, Implementing Login and Logout with JWT, Prerequisites Token-based Authentication\",\"datePublished\":\"2024-11-01T09:12:56+00:00\",\"dateModified\":\"2024-11-01T11:29:29+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/atmokpo.com\/w\/32987\/\"},\"wordCount\":290,\"publisher\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#organization\"},\"articleSection\":[\"Spring Boot backend development\"],\"inLanguage\":\"ko-KR\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/atmokpo.com\/w\/32987\/\",\"url\":\"https:\/\/atmokpo.com\/w\/32987\/\",\"name\":\"Spring Boot Backend Development Course, Implementing Login and Logout with JWT, Prerequisites Token-based Authentication - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#website\"},\"datePublished\":\"2024-11-01T09:12:56+00:00\",\"dateModified\":\"2024-11-01T11:29:29+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/atmokpo.com\/w\/32987\/#breadcrumb\"},\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/atmokpo.com\/w\/32987\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/atmokpo.com\/w\/32987\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\ud648\",\"item\":\"https:\/\/atmokpo.com\/w\/en\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Spring Boot Backend Development Course, Implementing Login and Logout with JWT, Prerequisites Token-based Authentication\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/atmokpo.com\/w\/#website\",\"url\":\"https:\/\/atmokpo.com\/w\/\",\"name\":\"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/atmokpo.com\/w\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"ko-KR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/atmokpo.com\/w\/#organization\",\"name\":\"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\",\"url\":\"https:\/\/atmokpo.com\/w\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/atmokpo.com\/w\/wp-content\/uploads\/2024\/11\/logo.png\",\"contentUrl\":\"https:\/\/atmokpo.com\/w\/wp-content\/uploads\/2024\/11\/logo.png\",\"width\":400,\"height\":400,\"caption\":\"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\"},\"image\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/x.com\/bebubo4\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7\",\"name\":\"root\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/708197b41fc6435a7ce22d951b25d4a47e9e904270cb1f04682d4f025066f80c?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/708197b41fc6435a7ce22d951b25d4a47e9e904270cb1f04682d4f025066f80c?s=96&d=mm&r=g\",\"caption\":\"root\"},\"sameAs\":[\"http:\/\/atmokpo.com\/w\"],\"url\":\"https:\/\/atmokpo.com\/w\/author\/root\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Spring Boot Backend Development Course, Implementing Login and Logout with JWT, Prerequisites Token-based Authentication - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/atmokpo.com\/w\/32987\/","og_locale":"ko_KR","og_type":"article","og_title":"Spring Boot Backend Development Course, Implementing Login and Logout with JWT, Prerequisites Token-based Authentication - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","og_description":"In this course, we will delve deeply into how to implement login and logout functionality based on JWT (JSON Web Token) using Spring Boot. This article explains the basic concepts of JWT and how to utilize JWT in Spring Boot. Furthermore, we will start with the necessary prerequisites and development environment setup, aiming to enhance &hellip; \ub354 \ubcf4\uae30 \"Spring Boot Backend Development Course, Implementing Login and Logout with JWT, Prerequisites Token-based Authentication\"","og_url":"https:\/\/atmokpo.com\/w\/32987\/","og_site_name":"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","article_published_time":"2024-11-01T09:12:56+00:00","article_modified_time":"2024-11-01T11:29:29+00:00","author":"root","twitter_card":"summary_large_image","twitter_creator":"@bebubo4","twitter_site":"@bebubo4","twitter_misc":{"\uae00\uc4f4\uc774":"root","\uc608\uc0c1 \ub418\ub294 \ud310\ub3c5 \uc2dc\uac04":"2\ubd84"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/atmokpo.com\/w\/32987\/#article","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/32987\/"},"author":{"name":"root","@id":"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7"},"headline":"Spring Boot Backend Development Course, Implementing Login and Logout with JWT, Prerequisites Token-based Authentication","datePublished":"2024-11-01T09:12:56+00:00","dateModified":"2024-11-01T11:29:29+00:00","mainEntityOfPage":{"@id":"https:\/\/atmokpo.com\/w\/32987\/"},"wordCount":290,"publisher":{"@id":"https:\/\/atmokpo.com\/w\/#organization"},"articleSection":["Spring Boot backend development"],"inLanguage":"ko-KR"},{"@type":"WebPage","@id":"https:\/\/atmokpo.com\/w\/32987\/","url":"https:\/\/atmokpo.com\/w\/32987\/","name":"Spring Boot Backend Development Course, Implementing Login and Logout with JWT, Prerequisites Token-based Authentication - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/#website"},"datePublished":"2024-11-01T09:12:56+00:00","dateModified":"2024-11-01T11:29:29+00:00","breadcrumb":{"@id":"https:\/\/atmokpo.com\/w\/32987\/#breadcrumb"},"inLanguage":"ko-KR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/atmokpo.com\/w\/32987\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/atmokpo.com\/w\/32987\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\ud648","item":"https:\/\/atmokpo.com\/w\/en\/"},{"@type":"ListItem","position":2,"name":"Spring Boot Backend Development Course, Implementing Login and Logout with JWT, Prerequisites Token-based Authentication"}]},{"@type":"WebSite","@id":"https:\/\/atmokpo.com\/w\/#website","url":"https:\/\/atmokpo.com\/w\/","name":"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","description":"","publisher":{"@id":"https:\/\/atmokpo.com\/w\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/atmokpo.com\/w\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"ko-KR"},{"@type":"Organization","@id":"https:\/\/atmokpo.com\/w\/#organization","name":"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","url":"https:\/\/atmokpo.com\/w\/","logo":{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/atmokpo.com\/w\/#\/schema\/logo\/image\/","url":"https:\/\/atmokpo.com\/w\/wp-content\/uploads\/2024\/11\/logo.png","contentUrl":"https:\/\/atmokpo.com\/w\/wp-content\/uploads\/2024\/11\/logo.png","width":400,"height":400,"caption":"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8"},"image":{"@id":"https:\/\/atmokpo.com\/w\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/x.com\/bebubo4"]},{"@type":"Person","@id":"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7","name":"root","image":{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/atmokpo.com\/w\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/708197b41fc6435a7ce22d951b25d4a47e9e904270cb1f04682d4f025066f80c?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/708197b41fc6435a7ce22d951b25d4a47e9e904270cb1f04682d4f025066f80c?s=96&d=mm&r=g","caption":"root"},"sameAs":["http:\/\/atmokpo.com\/w"],"url":"https:\/\/atmokpo.com\/w\/author\/root\/"}]}},"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack-related-posts":[],"_links":{"self":[{"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/32987","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/comments?post=32987"}],"version-history":[{"count":1,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/32987\/revisions"}],"predecessor-version":[{"id":32988,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/32987\/revisions\/32988"}],"wp:attachment":[{"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/media?parent=32987"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/categories?post=32987"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/tags?post=32987"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}