{"id":33035,"date":"2024-11-01T09:13:17","date_gmt":"2024-11-01T09:13:17","guid":{"rendered":"http:\/\/atmokpo.com\/w\/?p=33035"},"modified":"2024-11-01T11:29:15","modified_gmt":"2024-11-01T11:29:15","slug":"spring-boot-backend-development-course-adding-approved-uri-to-oauth-service","status":"publish","type":"post","link":"https:\/\/atmokpo.com\/w\/33035\/","title":{"rendered":"Spring Boot Backend Development Course, Adding Approved URI to OAuth Service"},"content":{"rendered":"<p><body><\/p>\n<p>Modern web applications require user authentication and authorization management. OAuth 2.0 is one of the popular protocols for such authentication, allowing users to securely access services without exposing their credentials to third-party applications. This tutorial will guide you step-by-step on how to add authorized URIs to an OAuth service using Spring Boot.<\/p>\n<h2>1. Overview of OAuth<\/h2>\n<p>OAuth 2.0 is a protocol for user authentication, widely used primarily in web applications. When using OAuth, users receive a token that allows them to access other services without providing their login information. OAuth 2.0 supports many different authentication providers, each requiring a URI to process authentication requests.<\/p>\n<h2>2. Integrating Spring Boot with OAuth<\/h2>\n<p>Using Spring Boot makes it easy to implement OAuth 2.0 authentication. This process aims to set up an OAuth 2.0 client using Spring Security and add authorized URIs to the service.<\/p>\n<h3>2.1. Project Setup<\/h3>\n<p>To start a Spring Boot project, add the dependencies for <code>spring-boot-starter-web<\/code> and <code>spring-boot-starter-security<\/code>. Additionally, you will also need the dependency for <code>spring-boot-starter-oauth2-client<\/code> to use OAuth 2.0 clients.<\/p>\n<pre><code>    \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-security&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<\/code><\/pre>\n<h2>3. Understanding the Authorized URI<\/h2>\n<p>In OAuth 2.0, the authorized URI is the address where users will be redirected after authentication. This URI is specified when registering the client, and the authentication service redirects to this URI to send the response after user authentication. It may include an access token along with user information.<\/p>\n<h2>4. Adding Authorized URI in Spring Boot<\/h2>\n<h3>4.1. Configuring application.yml<\/h3>\n<p>In Spring Boot, you can set up OAuth client properties through the <code>application.yml<\/code> or <code>application.properties<\/code> file. Here is an example of configuring a Google OAuth 2.0 client.<\/p>\n<pre><code>\nspring:\n  security:\n    oauth2:\n      client:\n        registration:\n          google:\n            client-id: YOUR_CLIENT_ID\n            client-secret: YOUR_CLIENT_SECRET\n            scope: profile, email\n            redirect-uri: \"{baseUrl}\/login\/oauth2\/code\/{registrationId}\"\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<\/code><\/pre>\n<h3>4.2. Configuring Web Security<\/h3>\n<p>To use OAuth 2.0 authentication, you need to add web security configuration. The following settings ensure that only authenticated users can access certain paths.<\/p>\n<pre><code>\nimport org.springframework.context.annotation.Bean;\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\").permitAll() \/\/ Paths accessible without login\n                .anyRequest().authenticated() \/\/ All other requests require authentication\n                .and()\n            .oauth2Login(); \/\/ OAuth 2.0 login\n    }\n}\n<\/code><\/pre>\n<h3>4.3. Testing the Authorized URI<\/h3>\n<p>You can now run Spring Boot and navigate to <a href=\"http:\/\/localhost:8080\">http:\/\/localhost:8080<\/a> to test the OAuth login. A Google login button will appear, allowing users to authenticate.<\/p>\n<h2>5. Monitoring the Authorized URI<\/h2>\n<p>It is important to understand how the authorized URI works in an OAuth 2.0 application. Let&#8217;s look at several issues that may arise in this process and their solutions.<\/p>\n<h3>5.1. Redirection Errors<\/h3>\n<p>If the redirection URI is set incorrectly, users may not be redirected to the appropriate page after authentication. In such cases, you need to ensure that the authorized redirection URI is entered correctly when registering the client. For example:<\/p>\n<pre><code>    \n    redirect-uri: http:\/\/localhost:8080\/login\/oauth2\/code\/google\n<\/code><\/pre>\n<h3>5.2. Scope Issues<\/h3>\n<p>Problems can also occur if the requested scopes are set incorrectly. If the scopes are set wrong, the authentication may fail, so pay attention to scope settings.<\/p>\n<h2>6. Implementing Additional Features<\/h2>\n<p>Now that we have set the basic OAuth 2.0 elements, we can implement features that display additional information after user authentication or control conditional access rights. For instance, let&#8217;s look at how to retrieve user profile information and display it on a web page.<\/p>\n<h3>6.1. Fetching User Information<\/h3>\n<pre><code>\nimport org.springframework.security.core.annotation.AuthenticationPrincipal;\nimport org.springframework.stereotype.Controller;\nimport org.springframework.ui.Model;\nimport org.springframework.web.bind.annotation.GetMapping;\n\n@Controller\npublic class UserController {\n\n    @GetMapping(\"\/user\")\n    public String user(@AuthenticationPrincipal OAuth2AuthenticationToken authentication, Model model) {\n        model.addAttribute(\"user\", authentication.getPrincipal().getAttributes());\n        return \"user\"; \/\/ Navigate to user.html\n    }\n}\n<\/code><\/pre>\n<h3>6.2. Displaying User Information<\/h3>\n<p>To display user information, you can create a simple HTML template. Create a file named src\/main\/resources\/templates\/user.html and add the following code.<\/p>\n<pre><code>\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;User Information&lt;\/title&gt;\n&lt;\/head&gt;\n&lt;body&gt;\n\n&lt;h1&gt;User Information&lt;\/h1&gt;\n&lt;ul&gt;\n    &lt;li&gt;Name: &lt;span th:text=\"${user['name']}\"&gt;&lt;\/span&gt;&lt;\/li&gt;\n    &lt;li&gt;Email: &lt;span th:text=\"${user['email']}\"&gt;&lt;\/span&gt;&lt;\/li&gt;\n&lt;\/ul&gt;\n\n&lt;\/body&gt;\n&lt;\/html&gt;\n<\/code><\/pre>\n<h2>7. Conclusion<\/h2>\n<p>In this tutorial, we learned how to set up OAuth 2.0 authentication using Spring Boot and add authorized URIs. Implementing user authentication through the OAuth protocol provides a secure and convenient user experience. You can now add these functionalities to your projects and explore integrations with various APIs.<\/p>\n<p>To fully utilize all features of OAuth 2.0, it&#8217;s advisable to refer to various libraries and documentation. For more in-depth information, please consult the official OAuth 2.0 documentation.<\/p>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Modern web applications require user authentication and authorization management. OAuth 2.0 is one of the popular protocols for such authentication, allowing users to securely access services without exposing their credentials to third-party applications. This tutorial will guide you step-by-step on how to add authorized URIs to an OAuth service using Spring Boot. 1. Overview of &hellip; <a href=\"https:\/\/atmokpo.com\/w\/33035\/\" class=\"more-link\">\ub354 \ubcf4\uae30<span class=\"screen-reader-text\"> &#8220;Spring Boot Backend Development Course, Adding Approved URI to OAuth 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-33035","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, Adding Approved URI to OAuth 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\/33035\/\" \/>\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, Adding Approved URI to OAuth Service - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"og:description\" content=\"Modern web applications require user authentication and authorization management. OAuth 2.0 is one of the popular protocols for such authentication, allowing users to securely access services without exposing their credentials to third-party applications. This tutorial will guide you step-by-step on how to add authorized URIs to an OAuth service using Spring Boot. 1. Overview of &hellip; \ub354 \ubcf4\uae30 &quot;Spring Boot Backend Development Course, Adding Approved URI to OAuth Service&quot;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/atmokpo.com\/w\/33035\/\" \/>\n<meta property=\"og:site_name\" content=\"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"article:published_time\" content=\"2024-11-01T09:13:17+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-11-01T11:29:15+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=\"4\ubd84\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/atmokpo.com\/w\/33035\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/33035\/\"},\"author\":{\"name\":\"root\",\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7\"},\"headline\":\"Spring Boot Backend Development Course, Adding Approved URI to OAuth Service\",\"datePublished\":\"2024-11-01T09:13:17+00:00\",\"dateModified\":\"2024-11-01T11:29:15+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/atmokpo.com\/w\/33035\/\"},\"wordCount\":568,\"publisher\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#organization\"},\"articleSection\":[\"Spring Boot backend development\"],\"inLanguage\":\"ko-KR\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/atmokpo.com\/w\/33035\/\",\"url\":\"https:\/\/atmokpo.com\/w\/33035\/\",\"name\":\"Spring Boot Backend Development Course, Adding Approved URI to OAuth Service - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#website\"},\"datePublished\":\"2024-11-01T09:13:17+00:00\",\"dateModified\":\"2024-11-01T11:29:15+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/atmokpo.com\/w\/33035\/#breadcrumb\"},\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/atmokpo.com\/w\/33035\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/atmokpo.com\/w\/33035\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\ud648\",\"item\":\"https:\/\/atmokpo.com\/w\/en\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Spring Boot Backend Development Course, Adding Approved URI to OAuth 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, Adding Approved URI to OAuth 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\/33035\/","og_locale":"ko_KR","og_type":"article","og_title":"Spring Boot Backend Development Course, Adding Approved URI to OAuth Service - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","og_description":"Modern web applications require user authentication and authorization management. OAuth 2.0 is one of the popular protocols for such authentication, allowing users to securely access services without exposing their credentials to third-party applications. This tutorial will guide you step-by-step on how to add authorized URIs to an OAuth service using Spring Boot. 1. Overview of &hellip; \ub354 \ubcf4\uae30 \"Spring Boot Backend Development Course, Adding Approved URI to OAuth Service\"","og_url":"https:\/\/atmokpo.com\/w\/33035\/","og_site_name":"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","article_published_time":"2024-11-01T09:13:17+00:00","article_modified_time":"2024-11-01T11:29:15+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":"4\ubd84"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/atmokpo.com\/w\/33035\/#article","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/33035\/"},"author":{"name":"root","@id":"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7"},"headline":"Spring Boot Backend Development Course, Adding Approved URI to OAuth Service","datePublished":"2024-11-01T09:13:17+00:00","dateModified":"2024-11-01T11:29:15+00:00","mainEntityOfPage":{"@id":"https:\/\/atmokpo.com\/w\/33035\/"},"wordCount":568,"publisher":{"@id":"https:\/\/atmokpo.com\/w\/#organization"},"articleSection":["Spring Boot backend development"],"inLanguage":"ko-KR"},{"@type":"WebPage","@id":"https:\/\/atmokpo.com\/w\/33035\/","url":"https:\/\/atmokpo.com\/w\/33035\/","name":"Spring Boot Backend Development Course, Adding Approved URI to OAuth Service - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/#website"},"datePublished":"2024-11-01T09:13:17+00:00","dateModified":"2024-11-01T11:29:15+00:00","breadcrumb":{"@id":"https:\/\/atmokpo.com\/w\/33035\/#breadcrumb"},"inLanguage":"ko-KR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/atmokpo.com\/w\/33035\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/atmokpo.com\/w\/33035\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\ud648","item":"https:\/\/atmokpo.com\/w\/en\/"},{"@type":"ListItem","position":2,"name":"Spring Boot Backend Development Course, Adding Approved URI to OAuth 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\/33035","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=33035"}],"version-history":[{"count":1,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/33035\/revisions"}],"predecessor-version":[{"id":33036,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/33035\/revisions\/33036"}],"wp:attachment":[{"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/media?parent=33035"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/categories?post=33035"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/tags?post=33035"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}