{"id":33007,"date":"2024-11-01T09:13:04","date_gmt":"2024-11-01T09:13:04","guid":{"rendered":"http:\/\/atmokpo.com\/w\/?p=33007"},"modified":"2024-11-01T11:29:24","modified_gmt":"2024-11-01T11:29:24","slug":"spring-boot-backend-development-course-implementing-login-and-logout-with-oauth2-implementing-oauth2-service","status":"publish","type":"post","link":"https:\/\/atmokpo.com\/w\/33007\/","title":{"rendered":"Spring Boot Backend Development Course, Implementing Login and Logout with OAuth2, Implementing OAuth2 Service"},"content":{"rendered":"<p><body><\/p>\n<p>In today&#8217;s lecture, we will learn in detail how to implement login and logout functionality based on <strong>OAuth2<\/strong> using Spring Boot. OAuth2 is a representative authentication protocol that enables efficient and secure authentication through integration with external services. Through this article, we will explain step by step how to implement OAuth2 services in Spring Boot with practical examples.<\/p>\n<h2>1. What is OAuth2?<\/h2>\n<p>OAuth2 is a protocol that allows a third-party application to access the resources of a resource owner. This enables users to access applications without the need to share their passwords. OAuth2 has two main roles:<\/p>\n<ul>\n<li><strong>Resource Owner<\/strong>: Typically refers to the user, who grants permission to provide their data to a third-party service.<\/li>\n<li><strong>Client<\/strong>: The application that requests the user&#8217;s data.<\/li>\n<\/ul>\n<h3>1.1 Key Components of OAuth2<\/h3>\n<ul>\n<li><strong>Authorization Server<\/strong>: The server that handles user authentication and authorization.<\/li>\n<li><strong>Resource Server<\/strong>: The server that provides protected resources (e.g., API).<\/li>\n<li><strong>Client Credentials<\/strong>: Information that identifies the application.<\/li>\n<li><strong>Access Token<\/strong>: A token representing access rights to the resource server.<\/li>\n<\/ul>\n<h2>2. Setting Up Spring Boot Environment<\/h2>\n<p>To set up OAuth2 using Spring Boot, you first need to add the required dependencies. You can use Gradle or Maven. Here, we will explain it based on Maven.<\/p>\n<h3>2.1 Adding Maven Dependencies<\/h3>\n<pre><code>pom.xml\n&lt;dependencies&gt;\n    &lt;dependency&gt;\n        &lt;groupId&gt;org.springframework.boot&lt;\/groupId&gt;\n        &lt;artifactId&gt;spring-boot-starter-web&lt;\/artifactId&gt;\n    &lt;\/dependency&gt;\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    &lt;dependency&gt;\n        &lt;groupId&gt;org.springframework.boot&lt;\/groupId&gt;\n        &lt;artifactId&gt;spring-boot-starter-security&lt;\/artifactId&gt;\n    &lt;\/dependency&gt;\n&lt;\/dependencies&gt;\n<\/code><\/pre>\n<h3>2.2 Configuring application.properties<\/h3>\n<p>Add the basic configuration that the OAuth2 client will use in the <code>application.properties<\/code> file.<\/p>\n<pre><code>application.properties\nspring.security.oauth2.client.registration.google.client-id=YOUR_CLIENT_ID\nspring.security.oauth2.client.registration.google.client-secret=YOUR_CLIENT_SECRET\nspring.security.oauth2.client.registration.google.redirect-uri={baseUrl}\/login\/oauth2\/code\/{registrationId}\nspring.security.oauth2.client.registration.google.scope=email,profile\nspring.security.oauth2.client.provider.google.authorization-uri=https:\/\/accounts.google.com\/o\/oauth2\/auth\nspring.security.oauth2.client.provider.google.token-uri=https:\/\/oauth2.googleapis.com\/token\nspring.security.oauth2.client.provider.google.user-info-uri=https:\/\/www.googleapis.com\/oauth2\/v3\/userinfo\nspring.security.oauth2.client.provider.google.user-name-attribute=sub\n<\/code><\/pre>\n<p><span class=\"important\">Note:<\/span> The <code>YOUR_CLIENT_ID<\/code> and <code>YOUR_CLIENT_SECRET<\/code> placeholders must be replaced with the credentials of the OAuth 2.0 client created in the Google Developer Console.<\/p>\n<h2>3. Implementing OAuth2 Login\/Logout<\/h2>\n<p>Now that we have completed the basic setup for applying OAuth2, we will proceed to implement the login and logout functionalities.<\/p>\n<h3>3.1 Security Configuration<\/h3>\n<p>We configure security settings for the web application using Spring Security. Add the following code to the <code>SecurityConfig.java<\/code> class:<\/p>\n<pre><code>SecurityConfig.java\nimport org.springframework.context.annotation.Configuration;\nimport org.springframework.security.config.annotation.web.builders.HttpSecurity;\nimport org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;\nimport org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;\n\n@Configuration\n@EnableWebSecurity\npublic class SecurityConfig extends WebSecurityConfigurerAdapter {\n\n    @Override\n    protected void configure(HttpSecurity http) throws Exception {\n        http\n            .authorizeRequests()\n                .antMatchers(\"\/\", \"\/login\", \"\/css\/**\", \"\/js\/**\").permitAll()\n                .anyRequest().authenticated()\n            .and()\n            .logout()\n                .logoutSuccessUrl(\"\/\")\n                .permitAll()\n            .and()\n            .oauth2Login();\n    }\n}\n<\/code><\/pre>\n<h3>3.2 Implementing the Login Page<\/h3>\n<p>To create a login page, create a <code>login.html<\/code> file and add the following content:<\/p>\n<pre><code>login.html\n&lt;!DOCTYPE html&gt;\n&lt;html lang=\"en\"&gt;\n&lt;head&gt;\n    &lt;meta charset=\"UTF-8\"&gt;\n    &lt;title&gt;Login&lt;\/title&gt;\n&lt;\/head&gt;\n&lt;body&gt;\n    &lt;h1&gt;Login Page&lt;\/h1&gt;\n    &lt;a href=\"\/oauth2\/authorization\/google\"&gt;Login with Google&lt;\/a&gt;\n&lt;\/body&gt;\n&lt;\/html&gt;\n<\/code><\/pre>\n<h3>3.3 Handling User Information<\/h3>\n<p>Let&#8217;s learn how to handle user information after login. You can retrieve user information by implementing <code>OAuth2UserService<\/code>.<\/p>\n<pre><code>CustomOAuth2UserService.java\nimport org.springframework.security.core.userdetails.UserDetailsService;\nimport org.springframework.security.oauth2.client.userinfo.OAuth2UserRequest;\nimport org.springframework.security.oauth2.client.userinfo.OAuth2UserService;\nimport org.springframework.security.oauth2.core.OAuth2AuthenticationException;\nimport org.springframework.security.oauth2.core.user.OAuth2User;\nimport org.springframework.stereotype.Service;\n\n@Service\npublic class CustomOAuth2UserService implements OAuth2UserService&lt;OAuth2UserRequest, OAuth2User&gt; {\n\n    @Override\n    public OAuth2User loadUser(OAuth2UserRequest userRequest) throws OAuth2AuthenticationException {\n        \/\/ Handling user information\n        \/\/ For example, saving user information to the database or adding it to the session\n    }\n}\n<\/code><\/pre>\n<h2>4. Implementing OAuth2 Logout<\/h2>\n<p>The logout functionality can be easily implemented using the built-in Spring Security features. Since we have set the URL to redirect after logout success in the <code>SecurityConfig<\/code> class, you just need to add a logout button.<\/p>\n<h3>4.1 Adding a Logout Button<\/h3>\n<p>Add a logout button to the main page so that users can log out. A basic HTML code might look like this:<\/p>\n<pre><code>index.html\n&lt;!DOCTYPE html&gt;\n&lt;html lang=\"en\"&gt;\n&lt;head&gt;\n    &lt;meta charset=\"UTF-8\"&gt;\n    &lt;title&gt;Home Page&lt;\/title&gt;\n&lt;\/head&gt;\n&lt;body&gt;\n    &lt;h1&gt;Welcome!&lt;\/h1&gt;\n    &lt;a href=\"\/logout\"&gt;Logout&lt;\/a&gt;\n&lt;\/body&gt;\n&lt;\/html&gt;\n<\/code><\/pre>\n<h2>5. Conclusion<\/h2>\n<p>In today&#8217;s lecture, we explored how to implement login and logout functionality through OAuth2 using Spring Boot. OAuth2 is a useful method that leverages external services to facilitate user authentication in a simpler and more secure manner. I hope this lecture helped you understand the process of setting up Spring Boot and OAuth2, and that you learned practical implementation methods.<\/p>\n<h3>5.1 Additional Resources<\/h3>\n<p>If you want more in-depth content, please refer to the resources below:<\/p>\n<ul>\n<li><a href=\"https:\/\/spring.io\/guides\/tutorials\/spring-boot-oauth2\/\">Spring Guides: OAuth2<\/a><\/li>\n<li><a href=\"https:\/\/www.baeldung.com\/spring-security-oauth\">Baeldung: Spring Security OAuth Tutorial<\/a><\/li>\n<li><a href=\"https:\/\/oauth.net\/2\/\">OAuth 2.0 Specification<\/a><\/li>\n<\/ul>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In today&#8217;s lecture, we will learn in detail how to implement login and logout functionality based on OAuth2 using Spring Boot. OAuth2 is a representative authentication protocol that enables efficient and secure authentication through integration with external services. Through this article, we will explain step by step how to implement OAuth2 services in Spring Boot &hellip; <a href=\"https:\/\/atmokpo.com\/w\/33007\/\" class=\"more-link\">\ub354 \ubcf4\uae30<span class=\"screen-reader-text\"> &#8220;Spring Boot Backend Development Course, Implementing Login and Logout with OAuth2, Implementing OAuth2 Service&#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-33007","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, Implementing OAuth2 Service - \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\/33007\/\" \/>\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, Implementing OAuth2 Service - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"og:description\" content=\"In today&#8217;s lecture, we will learn in detail how to implement login and logout functionality based on OAuth2 using Spring Boot. OAuth2 is a representative authentication protocol that enables efficient and secure authentication through integration with external services. Through this article, we will explain step by step how to implement OAuth2 services in Spring Boot &hellip; \ub354 \ubcf4\uae30 &quot;Spring Boot Backend Development Course, Implementing Login and Logout with OAuth2, Implementing OAuth2 Service&quot;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/atmokpo.com\/w\/33007\/\" \/>\n<meta property=\"og:site_name\" content=\"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"article:published_time\" content=\"2024-11-01T09:13:04+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-11-01T11:29:24+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\/33007\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/33007\/\"},\"author\":{\"name\":\"root\",\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7\"},\"headline\":\"Spring Boot Backend Development Course, Implementing Login and Logout with OAuth2, Implementing OAuth2 Service\",\"datePublished\":\"2024-11-01T09:13:04+00:00\",\"dateModified\":\"2024-11-01T11:29:24+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/atmokpo.com\/w\/33007\/\"},\"wordCount\":486,\"publisher\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#organization\"},\"articleSection\":[\"Spring Boot backend development\"],\"inLanguage\":\"ko-KR\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/atmokpo.com\/w\/33007\/\",\"url\":\"https:\/\/atmokpo.com\/w\/33007\/\",\"name\":\"Spring Boot Backend Development Course, Implementing Login and Logout with OAuth2, Implementing OAuth2 Service - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#website\"},\"datePublished\":\"2024-11-01T09:13:04+00:00\",\"dateModified\":\"2024-11-01T11:29:24+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/atmokpo.com\/w\/33007\/#breadcrumb\"},\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/atmokpo.com\/w\/33007\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/atmokpo.com\/w\/33007\/#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, Implementing OAuth2 Service\"}]},{\"@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, Implementing OAuth2 Service - \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\/33007\/","og_locale":"ko_KR","og_type":"article","og_title":"Spring Boot Backend Development Course, Implementing Login and Logout with OAuth2, Implementing OAuth2 Service - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","og_description":"In today&#8217;s lecture, we will learn in detail how to implement login and logout functionality based on OAuth2 using Spring Boot. OAuth2 is a representative authentication protocol that enables efficient and secure authentication through integration with external services. Through this article, we will explain step by step how to implement OAuth2 services in Spring Boot &hellip; \ub354 \ubcf4\uae30 \"Spring Boot Backend Development Course, Implementing Login and Logout with OAuth2, Implementing OAuth2 Service\"","og_url":"https:\/\/atmokpo.com\/w\/33007\/","og_site_name":"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","article_published_time":"2024-11-01T09:13:04+00:00","article_modified_time":"2024-11-01T11:29:24+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\/33007\/#article","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/33007\/"},"author":{"name":"root","@id":"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7"},"headline":"Spring Boot Backend Development Course, Implementing Login and Logout with OAuth2, Implementing OAuth2 Service","datePublished":"2024-11-01T09:13:04+00:00","dateModified":"2024-11-01T11:29:24+00:00","mainEntityOfPage":{"@id":"https:\/\/atmokpo.com\/w\/33007\/"},"wordCount":486,"publisher":{"@id":"https:\/\/atmokpo.com\/w\/#organization"},"articleSection":["Spring Boot backend development"],"inLanguage":"ko-KR"},{"@type":"WebPage","@id":"https:\/\/atmokpo.com\/w\/33007\/","url":"https:\/\/atmokpo.com\/w\/33007\/","name":"Spring Boot Backend Development Course, Implementing Login and Logout with OAuth2, Implementing OAuth2 Service - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/#website"},"datePublished":"2024-11-01T09:13:04+00:00","dateModified":"2024-11-01T11:29:24+00:00","breadcrumb":{"@id":"https:\/\/atmokpo.com\/w\/33007\/#breadcrumb"},"inLanguage":"ko-KR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/atmokpo.com\/w\/33007\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/atmokpo.com\/w\/33007\/#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, Implementing OAuth2 Service"}]},{"@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\/33007","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=33007"}],"version-history":[{"count":1,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/33007\/revisions"}],"predecessor-version":[{"id":33008,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/33007\/revisions\/33008"}],"wp:attachment":[{"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/media?parent=33007"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/categories?post=33007"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/tags?post=33007"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}