{"id":33025,"date":"2024-11-01T09:13:12","date_gmt":"2024-11-01T09:13:12","guid":{"rendered":"http:\/\/atmokpo.com\/w\/?p=33025"},"modified":"2024-11-01T11:29:17","modified_gmt":"2024-11-01T11:29:17","slug":"spring-boot-backend-development-course-implementing-login-and-logout-with-oauth2-adding-dependencies","status":"publish","type":"post","link":"https:\/\/atmokpo.com\/w\/33025\/","title":{"rendered":"Spring Boot Backend Development Course, Implementing Login and Logout with OAuth2, Adding Dependencies"},"content":{"rendered":"<p><body><\/p>\n<article>\n<header>\n<p>Author: [Your Name]<\/p>\n<p>Date: [Current Date]<\/p>\n<\/header>\n<section>\n<h2>1. Introduction<\/h2>\n<p>\n                Modern applications commonly use the OAuth2 protocol for user authentication and authorization. This protocol helps to handle user information securely and flexibly across various client applications. In this tutorial, we will guide you step by step on how to implement login and logout features based on OAuth2 using Spring Boot.\n            <\/p>\n<\/section>\n<section>\n<h2>2. Starting a Spring Boot Project<\/h2>\n<p>\n                To start a Spring Boot project, the first step is to generate the basic project structure using Spring Initializr. Below are the initial setup procedures.\n            <\/p>\n<ol>\n<li>Open a web browser and go to <a href=\"https:\/\/start.spring.io\/\" target=\"_blank\" rel=\"noopener\">Spring Initializr<\/a>.<\/li>\n<li>Set up the project metadata:\n<ul>\n<li>Project: Maven Project<\/li>\n<li>Language: Java<\/li>\n<li>Spring Boot: Latest Stable Version<\/li>\n<li>Group: com.example<\/li>\n<li>Artifact: oauth2-demo<\/li>\n<li>Name: oauth2-demo<\/li>\n<li>Description: OAuth2 Example Application<\/li>\n<\/ul>\n<\/li>\n<li>In the Dependencies section, add the following dependencies:\n<ul>\n<li>Spring Web<\/li>\n<li>Spring Security<\/li>\n<li>Spring Boot DevTools<\/li>\n<li>Spring Data JPA<\/li>\n<li>H2 Database (In-memory database for development and testing)<\/li>\n<\/ul>\n<\/li>\n<li>Click \u2018Generate\u2019 to download the ZIP file and extract it to your desired directory.<\/li>\n<\/ol>\n<\/section>\n<section>\n<h2>3. Adding Dependencies<\/h2>\n<p>\n                Now, open the Maven&#8217;s pom.xml file and add the OAuth2-related dependencies. Please add the following code to the `<dependencies>` section of pom.xml.<br \/>\n            <\/dependencies><\/p>\n<pre>\n                <code>\n                    &lt;dependency&gt;\n                        &lt;groupId&gt;org.springframework.boot&lt;\/groupId&gt;\n                        &lt;artifactId&gt;spring-boot-starter-oauth2-client&lt;\/artifactId&gt;\n                    &lt;\/dependency&gt;\n\n                    &lt;dependency&gt;\n                        &lt;groupId&gt;org.springframework.security&lt;\/groupId&gt;\n                        &lt;artifactId&gt;spring-security-oauth2-client&lt;\/artifactId&gt;\n                    &lt;\/dependency&gt;\n\n                    &lt;dependency&gt;\n                        &lt;groupId&gt;org.springframework.security&lt;\/groupId&gt;\n                        &lt;artifactId&gt;spring-security-oauth2-jose&lt;\/artifactId&gt;\n                    &lt;\/dependency&gt;\n                <\/code>\n            <\/pre>\n<p>\n                Adding the above dependencies will allow you to use the default settings for the OAuth2 client. Next, you need to create an entity that can store user information using JpaRepository.\n            <\/p>\n<\/section>\n<section>\n<h2>4. Setting Up User Entity and Repository<\/h2>\n<p>\n                Create an entity class to store user information for the application. The code below is an example of the User entity that will hold user information.\n            <\/p>\n<pre>\n                <code>\n                    package com.example.oauth2demo.model;\n\n                    import javax.persistence.Entity;\n                    import javax.persistence.GeneratedValue;\n                    import javax.persistence.GenerationType;\n                    import javax.persistence.Id;\n\n                    @Entity\n                    public class User {\n                        @Id\n                        @GeneratedValue(strategy = GenerationType.IDENTITY)\n                        private Long id;\n\n                        private String email;\n                        private String name;\n\n                        \/\/ Getters and Setters\n                    }\n                <\/code>\n            <\/pre>\n<p>\n                Next, create a JpaRepository for the User entity.\n            <\/p>\n<pre>\n                <code>\n                    package com.example.oauth2demo.repository;\n\n                    import com.example.oauth2demo.model.User;\n                    import org.springframework.data.jpa.repository.JpaRepository;\n\n                    public interface UserRepository extends JpaRepository&lt;User, Long&gt; {\n                        User findByEmail(String email);\n                    }\n                <\/code>\n            <\/pre>\n<\/section>\n<section>\n<h2>5. Configuring OAuth2<\/h2>\n<p>\n                To add OAuth2 login functionality, you need to configure the OAuth2 client in the application.yml file. Please refer to the example below.\n            <\/p>\n<pre>\n                <code>\n                    spring:\n                      security:\n                        oauth2:\n                          client:\n                            registration:\n                              google:\n                                client-id: YOUR_CLIENT_ID\n                                client-secret: YOUR_CLIENT_SECRET\n                                scope:\n                                  - email\n                                  - profile\n                            provider:\n                              google:\n                                authorization-uri: https:\/\/accounts.google.com\/o\/oauth2\/auth\n                                token-uri: https:\/\/oauth2.googleapis.com\/token\n                                user-info-uri: https:\/\/www.googleapis.com\/oauth2\/v3\/userinfo\n                                user-name-attribute: sub\n                <\/code>\n            <\/pre>\n<p>\n                You need to register your Google API client here. You can create a client in the Google Cloud Console to obtain the client-id and client-secret.\n            <\/p>\n<\/section>\n<section>\n<h2>6. Configuring Security<\/h2>\n<p>\n                We will discuss how to set up Spring Security to handle OAuth2 login and logout. Write a SecurityConfig class and add HTTP security configurations.\n            <\/p>\n<pre>\n                <code>\n                    package com.example.oauth2demo.config;\n\n                    import org.springframework.context.annotation.Bean;\n                    import org.springframework.context.annotation.Configuration;\n                    import org.springframework.security.config.annotation.web.builders.HttpSecurity;\n                    import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;\n                    import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;\n\n                    @Configuration\n                    @EnableWebSecurity\n                    public class SecurityConfig extends WebSecurityConfigurerAdapter {\n                        @Override\n                        protected void configure(HttpSecurity http) throws Exception {\n                            http\n                                .authorizeRequests()\n                                    .antMatchers(\"\/\", \"\/login\", \"\/oauth2\/**\").permitAll()\n                                    .anyRequest().authenticated()\n                                .and()\n                                    .oauth2Login()\n                                        .defaultSuccessUrl(\"\/home\", true)\n                                .and()\n                                    .logout()\n                                        .logoutSuccessUrl(\"\/\");\n                        }\n                    }\n                <\/code>\n            <\/pre>\n<p>\n                With this configuration, the root and login pages, as well as OAuth2-related URLs, are accessible to everyone, while only authenticated users can access other pages.\n            <\/p>\n<\/section>\n<section>\n<h2>7. Writing the Controller<\/h2>\n<p>\n                You need to write a controller to redirect users to the appropriate page after they log in using OAuth2. Below is an example of a basic controller.\n            <\/p>\n<pre>\n                <code>\n                    package com.example.oauth2demo.controller;\n\n                    import org.springframework.stereotype.Controller;\n                    import org.springframework.web.bind.annotation.GetMapping;\n\n                    @Controller\n                    public class MainController {\n                        @GetMapping(\"\/\")\n                        public String index() {\n                            return \"index\"; \/\/ Return index.html page\n                        }\n\n                        @GetMapping(\"\/home\")\n                        public String home() {\n                            return \"home\"; \/\/ Return home.html page\n                        }\n                    }\n                <\/code>\n            <\/pre>\n<p>\n                This controller returns index.html and home.html pages for the root path and home path, respectively.\n            <\/p>\n<\/section>\n<section>\n<h2>8. Setting Up View Templates<\/h2>\n<p>\n                Use Thymeleaf to set up the View templates. Create index.html and home.html in the resources\/templates folder. Below is sample code for each file.\n            <\/p>\n<pre>\n                <code>\n                    &lt;!-- index.html --&gt;\n                    &lt;!DOCTYPE html&gt;\n                    &lt;html xmlns:th=\"http:\/\/www.thymeleaf.org\"&gt;\n                    &lt;head&gt;\n                        &lt;title&gt;OAuth2 Login Example&lt;\/title&gt;\n                    &lt;\/head&gt;\n                    &lt;body&gt;\n                        &lt;h1&gt;Welcome!&lt;\/h1&gt;\n                        &lt;a th:href=\"@{\/oauth2\/authorization\/google}\"&gt;Login with Google&lt;\/a&gt;\n                    &lt;\/body&gt;\n                    &lt;\/html&gt;\n                <\/code>\n            <\/pre>\n<pre>\n                <code>\n                    &lt;!-- home.html --&gt;\n                    &lt;!DOCTYPE html&gt;\n                    &lt;html xmlns:th=\"http:\/\/www.thymeleaf.org\"&gt;\n                    &lt;head&gt;\n                        &lt;title&gt;Home Page&lt;\/title&gt;\n                    &lt;\/head&gt;\n                    &lt;body&gt;\n                        &lt;h1&gt;Welcome to the Home Page!&lt;\/h1&gt;\n                        &lt;a href=\"\/logout\"&gt;Logout&lt;\/a&gt;\n                    &lt;\/body&gt;\n                    &lt;\/html&gt;\n                <\/code>\n            <\/pre>\n<\/section>\n<section>\n<h2>9. Running the Application<\/h2>\n<p>\n                Once all configurations are completed, run the application. You can either run the main class from your IDE or execute the following command in the terminal.\n            <\/p>\n<pre>\n                <code>\n                    mvn spring-boot:run\n                <\/code>\n            <\/pre>\n<p>\n                If the application runs successfully, you can access the login screen at <a href=\"http:\/\/localhost:8080\">http:\/\/localhost:8080<\/a> in your web browser.\n            <\/p>\n<\/section>\n<section>\n<h2>10. Conclusion<\/h2>\n<p>\n                In this tutorial, we explored the implementation process of OAuth2 login\/logout features using Spring Boot. This example provides an introduction to basic configurations, and in real projects, further security settings and management of user data should be considered. We encourage you to extend OAuth2 in a way that fits your project and implement user authentication features.\n            <\/p>\n<\/section>\n<footer>\n<p>I hope this tutorial was helpful. Please leave your questions or feedback in the comments.<\/p>\n<\/footer>\n<\/article>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Author: [Your Name] Date: [Current Date] 1. Introduction Modern applications commonly use the OAuth2 protocol for user authentication and authorization. This protocol helps to handle user information securely and flexibly across various client applications. In this tutorial, we will guide you step by step on how to implement login and logout features based on OAuth2 &hellip; <a href=\"https:\/\/atmokpo.com\/w\/33025\/\" class=\"more-link\">\ub354 \ubcf4\uae30<span class=\"screen-reader-text\"> &#8220;Spring Boot Backend Development Course, Implementing Login and Logout with OAuth2, Adding Dependencies&#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-33025","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 OAuth2, Adding Dependencies - \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\/33025\/\" \/>\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 OAuth2, Adding Dependencies - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"og:description\" content=\"Author: [Your Name] Date: [Current Date] 1. Introduction Modern applications commonly use the OAuth2 protocol for user authentication and authorization. This protocol helps to handle user information securely and flexibly across various client applications. In this tutorial, we will guide you step by step on how to implement login and logout features based on OAuth2 &hellip; \ub354 \ubcf4\uae30 &quot;Spring Boot Backend Development Course, Implementing Login and Logout with OAuth2, Adding Dependencies&quot;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/atmokpo.com\/w\/33025\/\" \/>\n<meta property=\"og:site_name\" content=\"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"article:published_time\" content=\"2024-11-01T09:13:12+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-11-01T11:29:17+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=\"5\ubd84\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/atmokpo.com\/w\/33025\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/33025\/\"},\"author\":{\"name\":\"root\",\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7\"},\"headline\":\"Spring Boot Backend Development Course, Implementing Login and Logout with OAuth2, Adding Dependencies\",\"datePublished\":\"2024-11-01T09:13:12+00:00\",\"dateModified\":\"2024-11-01T11:29:17+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/atmokpo.com\/w\/33025\/\"},\"wordCount\":573,\"publisher\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#organization\"},\"articleSection\":[\"Spring Boot backend development\"],\"inLanguage\":\"ko-KR\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/atmokpo.com\/w\/33025\/\",\"url\":\"https:\/\/atmokpo.com\/w\/33025\/\",\"name\":\"Spring Boot Backend Development Course, Implementing Login and Logout with OAuth2, Adding Dependencies - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#website\"},\"datePublished\":\"2024-11-01T09:13:12+00:00\",\"dateModified\":\"2024-11-01T11:29:17+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/atmokpo.com\/w\/33025\/#breadcrumb\"},\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/atmokpo.com\/w\/33025\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/atmokpo.com\/w\/33025\/#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 OAuth2, Adding Dependencies\"}]},{\"@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 OAuth2, Adding Dependencies - \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\/33025\/","og_locale":"ko_KR","og_type":"article","og_title":"Spring Boot Backend Development Course, Implementing Login and Logout with OAuth2, Adding Dependencies - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","og_description":"Author: [Your Name] Date: [Current Date] 1. Introduction Modern applications commonly use the OAuth2 protocol for user authentication and authorization. This protocol helps to handle user information securely and flexibly across various client applications. In this tutorial, we will guide you step by step on how to implement login and logout features based on OAuth2 &hellip; \ub354 \ubcf4\uae30 \"Spring Boot Backend Development Course, Implementing Login and Logout with OAuth2, Adding Dependencies\"","og_url":"https:\/\/atmokpo.com\/w\/33025\/","og_site_name":"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","article_published_time":"2024-11-01T09:13:12+00:00","article_modified_time":"2024-11-01T11:29:17+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":"5\ubd84"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/atmokpo.com\/w\/33025\/#article","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/33025\/"},"author":{"name":"root","@id":"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7"},"headline":"Spring Boot Backend Development Course, Implementing Login and Logout with OAuth2, Adding Dependencies","datePublished":"2024-11-01T09:13:12+00:00","dateModified":"2024-11-01T11:29:17+00:00","mainEntityOfPage":{"@id":"https:\/\/atmokpo.com\/w\/33025\/"},"wordCount":573,"publisher":{"@id":"https:\/\/atmokpo.com\/w\/#organization"},"articleSection":["Spring Boot backend development"],"inLanguage":"ko-KR"},{"@type":"WebPage","@id":"https:\/\/atmokpo.com\/w\/33025\/","url":"https:\/\/atmokpo.com\/w\/33025\/","name":"Spring Boot Backend Development Course, Implementing Login and Logout with OAuth2, Adding Dependencies - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/#website"},"datePublished":"2024-11-01T09:13:12+00:00","dateModified":"2024-11-01T11:29:17+00:00","breadcrumb":{"@id":"https:\/\/atmokpo.com\/w\/33025\/#breadcrumb"},"inLanguage":"ko-KR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/atmokpo.com\/w\/33025\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/atmokpo.com\/w\/33025\/#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 OAuth2, Adding Dependencies"}]},{"@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\/33025","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=33025"}],"version-history":[{"count":1,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/33025\/revisions"}],"predecessor-version":[{"id":33026,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/33025\/revisions\/33026"}],"wp:attachment":[{"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/media?parent=33025"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/categories?post=33025"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/tags?post=33025"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}