{"id":81,"date":"2024-02-25T09:16:29","date_gmt":"2024-02-25T09:16:29","guid":{"rendered":"https:\/\/blog.fubuha.com\/?p=81"},"modified":"2024-06-17T05:48:07","modified_gmt":"2024-06-17T05:48:07","slug":"azure-app-registration-role-w-aplikacji-spa-1-2","status":"publish","type":"post","link":"https:\/\/blog.fubuha.com\/index.php\/2024\/02\/25\/azure-app-registration-role-w-aplikacji-spa-1-2\/","title":{"rendered":"Azure App Registration &#8211; roles in react SPA (1\/2)"},"content":{"rendered":"\r\n<p><br>Starting work on your new SPA (Single Page Application) and need a solid and FREE authentication and access control mechanism? In that case, the Microsoft Entra service (formerly Azure Active Directory) might be an excellent solution. This post will discuss how to register a SPA in Microsoft Entra step by step, to secure it against unauthorized access and utilize the ability to assign roles to users within a Tenant. The following example is based on a tutorial I found on GitHub here: <a href=\"https:\/\/github.com\/Azure-Samples\/ms-identity-javascript-react-tutorial\/tree\/main\/5-AccessControl\/1-call-api-roles#step-2-install-express-web-api-dependencies\" target=\"_blank\" rel=\"noreferrer noopener\">LINK<\/a><\/p>\r\n\r\n\r\n\r\n<p>I assume that you already have your own Tenant (according to Microsoft&#8217;s Polish translations, it&#8217;s called &#8220;dzier\u017cawa,&#8221; but let&#8217;s stick with the original names). If not, you can find out how to create one here: <a href=\"https:\/\/learn.microsoft.com\/en-us\/entra\/identity-platform\/quickstart-create-new-tenant\" target=\"_blank\" rel=\"noreferrer noopener\">LINK<\/a><\/p>\r\n\r\n\r\n\r\n<p><br>We proceed to configure our Tenant in Microsoft Entra, starting with creating a new App registration:<\/p>\r\n\r\n\r\n\r\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"958\" height=\"913\" src=\"https:\/\/blog.fubuha.com\/wp-content\/uploads\/2023\/11\/2023-11-04_14h49_13.png\" alt=\"\" class=\"wp-image-82\" style=\"width:840px;height:800px\" srcset=\"https:\/\/blog.fubuha.com\/wp-content\/uploads\/2023\/11\/2023-11-04_14h49_13.png 958w, https:\/\/blog.fubuha.com\/wp-content\/uploads\/2023\/11\/2023-11-04_14h49_13-300x286.png 300w, https:\/\/blog.fubuha.com\/wp-content\/uploads\/2023\/11\/2023-11-04_14h49_13-768x732.png 768w\" sizes=\"(max-width: 958px) 100vw, 958px\" \/><\/figure>\r\n\r\n\r\n\r\n<p><\/p>\r\n\r\n\r\n\r\n<p><br>We assign the name: msal-react-spa (we do not change the names of the registrations or descriptions, as the sample application will not work later on).<\/p>\r\n\r\n\r\n\r\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"958\" height=\"913\" src=\"https:\/\/blog.fubuha.com\/wp-content\/uploads\/2023\/11\/2023-11-04_16h59_35-1.png\" alt=\"\" class=\"wp-image-105\" srcset=\"https:\/\/blog.fubuha.com\/wp-content\/uploads\/2023\/11\/2023-11-04_16h59_35-1.png 958w, https:\/\/blog.fubuha.com\/wp-content\/uploads\/2023\/11\/2023-11-04_16h59_35-1-300x286.png 300w, https:\/\/blog.fubuha.com\/wp-content\/uploads\/2023\/11\/2023-11-04_16h59_35-1-768x732.png 768w\" sizes=\"(max-width: 958px) 100vw, 958px\" \/><\/figure>\r\n\r\n\r\n\r\n<p><br>We move to the Authentication tab.<\/p>\r\n\r\n\r\n\r\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"958\" height=\"913\" src=\"https:\/\/blog.fubuha.com\/wp-content\/uploads\/2023\/11\/2023-11-04_14h52_17.png\" alt=\"\" class=\"wp-image-83\" srcset=\"https:\/\/blog.fubuha.com\/wp-content\/uploads\/2023\/11\/2023-11-04_14h52_17.png 958w, https:\/\/blog.fubuha.com\/wp-content\/uploads\/2023\/11\/2023-11-04_14h52_17-300x286.png 300w, https:\/\/blog.fubuha.com\/wp-content\/uploads\/2023\/11\/2023-11-04_14h52_17-768x732.png 768w\" sizes=\"(max-width: 958px) 100vw, 958px\" \/><\/figure>\r\n\r\n\r\n\r\n<p><br>We add a configuration for the SPA platform (as shown in the pop-up window in the image below).<\/p>\r\n\r\n\r\n\r\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"958\" height=\"913\" src=\"https:\/\/blog.fubuha.com\/wp-content\/uploads\/2023\/11\/2023-11-04_14h53_14.png\" alt=\"\" class=\"wp-image-84\" srcset=\"https:\/\/blog.fubuha.com\/wp-content\/uploads\/2023\/11\/2023-11-04_14h53_14.png 958w, https:\/\/blog.fubuha.com\/wp-content\/uploads\/2023\/11\/2023-11-04_14h53_14-300x286.png 300w, https:\/\/blog.fubuha.com\/wp-content\/uploads\/2023\/11\/2023-11-04_14h53_14-768x732.png 768w\" sizes=\"(max-width: 958px) 100vw, 958px\" \/><\/figure>\r\n\r\n\r\n\r\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"460\" height=\"525\" src=\"https:\/\/blog.fubuha.com\/wp-content\/uploads\/2023\/11\/2023-11-04_17h03_03.png\" alt=\"\" class=\"wp-image-106\" srcset=\"https:\/\/blog.fubuha.com\/wp-content\/uploads\/2023\/11\/2023-11-04_17h03_03.png 460w, https:\/\/blog.fubuha.com\/wp-content\/uploads\/2023\/11\/2023-11-04_17h03_03-263x300.png 263w\" sizes=\"(max-width: 460px) 100vw, 460px\" \/><\/figure>\r\n\r\n\r\n\r\n<p><br>We fill in two redirect URIs:<\/p>\r\n\r\n\r\n\r\n<ol>\r\n<li><code>http:\/\/localhost:3000\/<\/code><\/li>\r\n\r\n\r\n\r\n<li><code>http:\/\/localhost:3000\/redirect<\/code><\/li>\r\n<\/ol>\r\n\r\n\r\n\r\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"958\" height=\"913\" src=\"https:\/\/blog.fubuha.com\/wp-content\/uploads\/2023\/11\/2023-11-04_14h54_39.png\" alt=\"\" class=\"wp-image-85\" srcset=\"https:\/\/blog.fubuha.com\/wp-content\/uploads\/2023\/11\/2023-11-04_14h54_39.png 958w, https:\/\/blog.fubuha.com\/wp-content\/uploads\/2023\/11\/2023-11-04_14h54_39-300x286.png 300w, https:\/\/blog.fubuha.com\/wp-content\/uploads\/2023\/11\/2023-11-04_14h54_39-768x732.png 768w\" sizes=\"(max-width: 958px) 100vw, 958px\" \/><\/figure>\r\n\r\n\r\n\r\n<p><br>We go to the Expose an API tab and add an application ID URI (leaving the default setting).<\/p>\r\n\r\n\r\n\r\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"958\" height=\"913\" src=\"https:\/\/blog.fubuha.com\/wp-content\/uploads\/2023\/11\/2023-11-04_14h58_00.png\" alt=\"\" class=\"wp-image-87\" srcset=\"https:\/\/blog.fubuha.com\/wp-content\/uploads\/2023\/11\/2023-11-04_14h58_00.png 958w, https:\/\/blog.fubuha.com\/wp-content\/uploads\/2023\/11\/2023-11-04_14h58_00-300x286.png 300w, https:\/\/blog.fubuha.com\/wp-content\/uploads\/2023\/11\/2023-11-04_14h58_00-768x732.png 768w\" sizes=\"(max-width: 958px) 100vw, 958px\" \/><\/figure>\r\n\r\n\r\n\r\n<p><br>Now, we add a scope by filling in the necessary details:<\/p>\r\n\r\n\r\n\r\n<p><em>access_via_approle_assignments<\/em><\/p>\r\n\r\n\r\n\r\n<p><em>Access &#8216;msal-react-spa&#8217; as the signed-in user assigned to App role<\/em>.<\/p>\r\n\r\n\r\n\r\n<p><em>Allow the app to access the &#8216;msal-react-spa&#8217; as a signed-in user assigned to one or more App roles<\/em>.<\/p>\r\n\r\n\r\n\r\n<p><em>Access &#8216;msal-react-spa&#8217; on your behalf after App role assignment<\/em>.<\/p>\r\n\r\n\r\n\r\n<p><em>Allow the app to access the &#8216;msal-react-spa&#8217; on your behalf after assignment to one or more App roles<\/em>.<\/p>\r\n\r\n\r\n\r\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"958\" height=\"913\" src=\"https:\/\/blog.fubuha.com\/wp-content\/uploads\/2023\/11\/2023-11-04_15h00_33.png\" alt=\"\" class=\"wp-image-88\" srcset=\"https:\/\/blog.fubuha.com\/wp-content\/uploads\/2023\/11\/2023-11-04_15h00_33.png 958w, https:\/\/blog.fubuha.com\/wp-content\/uploads\/2023\/11\/2023-11-04_15h00_33-300x286.png 300w, https:\/\/blog.fubuha.com\/wp-content\/uploads\/2023\/11\/2023-11-04_15h00_33-768x732.png 768w\" sizes=\"(max-width: 958px) 100vw, 958px\" \/><\/figure>\r\n\r\n\r\n\r\n<p><br>In the Manifest tab, we change the highlighted field from null to 2.<\/p>\r\n\r\n\r\n\r\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"958\" height=\"913\" src=\"https:\/\/blog.fubuha.com\/wp-content\/uploads\/2023\/11\/2023-11-04_15h01_38.png\" alt=\"\" class=\"wp-image-89\" srcset=\"https:\/\/blog.fubuha.com\/wp-content\/uploads\/2023\/11\/2023-11-04_15h01_38.png 958w, https:\/\/blog.fubuha.com\/wp-content\/uploads\/2023\/11\/2023-11-04_15h01_38-300x286.png 300w, https:\/\/blog.fubuha.com\/wp-content\/uploads\/2023\/11\/2023-11-04_15h01_38-768x732.png 768w\" sizes=\"(max-width: 958px) 100vw, 958px\" \/><\/figure>\r\n\r\n\r\n\r\n<p><br>In the API permissions tab, we add a permission.<\/p>\r\n\r\n\r\n\r\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"958\" height=\"913\" src=\"https:\/\/blog.fubuha.com\/wp-content\/uploads\/2023\/11\/2023-11-04_15h03_22.png\" alt=\"\" class=\"wp-image-90\" srcset=\"https:\/\/blog.fubuha.com\/wp-content\/uploads\/2023\/11\/2023-11-04_15h03_22.png 958w, https:\/\/blog.fubuha.com\/wp-content\/uploads\/2023\/11\/2023-11-04_15h03_22-300x286.png 300w, https:\/\/blog.fubuha.com\/wp-content\/uploads\/2023\/11\/2023-11-04_15h03_22-768x732.png 768w\" sizes=\"(max-width: 958px) 100vw, 958px\" \/><\/figure>\r\n\r\n\r\n\r\n<p>Attention here! The tutorial suggests searching for APIs under the My APIs tab, but currently, due to changes in Azure, it is likely located in the tab as shown in the screenshot below:<\/p>\r\n\r\n\r\n\r\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"958\" height=\"913\" src=\"https:\/\/blog.fubuha.com\/wp-content\/uploads\/2023\/11\/2023-11-04_15h13_29.png\" alt=\"\" class=\"wp-image-92\" srcset=\"https:\/\/blog.fubuha.com\/wp-content\/uploads\/2023\/11\/2023-11-04_15h13_29.png 958w, https:\/\/blog.fubuha.com\/wp-content\/uploads\/2023\/11\/2023-11-04_15h13_29-300x286.png 300w, https:\/\/blog.fubuha.com\/wp-content\/uploads\/2023\/11\/2023-11-04_15h13_29-768x732.png 768w\" sizes=\"(max-width: 958px) 100vw, 958px\" \/><\/figure>\r\n\r\n\r\n\r\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"958\" height=\"913\" src=\"https:\/\/blog.fubuha.com\/wp-content\/uploads\/2023\/11\/2023-11-04_15h14_31.png\" alt=\"\" class=\"wp-image-93\" srcset=\"https:\/\/blog.fubuha.com\/wp-content\/uploads\/2023\/11\/2023-11-04_15h14_31.png 958w, https:\/\/blog.fubuha.com\/wp-content\/uploads\/2023\/11\/2023-11-04_15h14_31-300x286.png 300w, https:\/\/blog.fubuha.com\/wp-content\/uploads\/2023\/11\/2023-11-04_15h14_31-768x732.png 768w\" sizes=\"(max-width: 958px) 100vw, 958px\" \/><\/figure>\r\n\r\n\r\n\r\n<p><br>We add a role that will later be transmitted to the application inside a claim.<\/p>\r\n\r\n\r\n\r\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"958\" height=\"913\" src=\"https:\/\/blog.fubuha.com\/wp-content\/uploads\/2023\/11\/2023-11-04_15h15_43.png\" alt=\"\" class=\"wp-image-94\" srcset=\"https:\/\/blog.fubuha.com\/wp-content\/uploads\/2023\/11\/2023-11-04_15h15_43.png 958w, https:\/\/blog.fubuha.com\/wp-content\/uploads\/2023\/11\/2023-11-04_15h15_43-300x286.png 300w, https:\/\/blog.fubuha.com\/wp-content\/uploads\/2023\/11\/2023-11-04_15h15_43-768x732.png 768w\" sizes=\"(max-width: 958px) 100vw, 958px\" \/><\/figure>\r\n\r\n\r\n\r\n<p><br>It is also necessary to set the owner of the application.<\/p>\r\n\r\n\r\n\r\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"958\" height=\"913\" src=\"https:\/\/blog.fubuha.com\/wp-content\/uploads\/2023\/11\/2023-11-04_15h17_18.png\" alt=\"\" class=\"wp-image-95\" srcset=\"https:\/\/blog.fubuha.com\/wp-content\/uploads\/2023\/11\/2023-11-04_15h17_18.png 958w, https:\/\/blog.fubuha.com\/wp-content\/uploads\/2023\/11\/2023-11-04_15h17_18-300x286.png 300w, https:\/\/blog.fubuha.com\/wp-content\/uploads\/2023\/11\/2023-11-04_15h17_18-768x732.png 768w\" sizes=\"(max-width: 958px) 100vw, 958px\" \/><\/figure>\r\n\r\n\r\n\r\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"968\" height=\"913\" src=\"https:\/\/blog.fubuha.com\/wp-content\/uploads\/2023\/11\/2023-11-04_15h17_41.png\" alt=\"\" class=\"wp-image-96\" srcset=\"https:\/\/blog.fubuha.com\/wp-content\/uploads\/2023\/11\/2023-11-04_15h17_41.png 968w, https:\/\/blog.fubuha.com\/wp-content\/uploads\/2023\/11\/2023-11-04_15h17_41-300x283.png 300w, https:\/\/blog.fubuha.com\/wp-content\/uploads\/2023\/11\/2023-11-04_15h17_41-768x724.png 768w\" sizes=\"(max-width: 968px) 100vw, 968px\" \/><\/figure>\r\n\r\n\r\n\r\n<p><br>Now, in the API permissions tab, click on &#8216;Grant admin consent&#8217;.<\/p>\r\n\r\n\r\n\r\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"958\" height=\"913\" src=\"https:\/\/blog.fubuha.com\/wp-content\/uploads\/2023\/11\/2023-11-04_15h23_29.png\" alt=\"\" class=\"wp-image-97\" srcset=\"https:\/\/blog.fubuha.com\/wp-content\/uploads\/2023\/11\/2023-11-04_15h23_29.png 958w, https:\/\/blog.fubuha.com\/wp-content\/uploads\/2023\/11\/2023-11-04_15h23_29-300x286.png 300w, https:\/\/blog.fubuha.com\/wp-content\/uploads\/2023\/11\/2023-11-04_15h23_29-768x732.png 768w\" sizes=\"(max-width: 958px) 100vw, 958px\" \/><\/figure>\r\n\r\n\r\n\r\n<p><br>At this point, we go one level up to the Microsoft Entra configuration and move to the Enterprise applications tab to assign the newly created roles to specific users.<\/p>\r\n\r\n\r\n\r\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"958\" height=\"913\" src=\"https:\/\/blog.fubuha.com\/wp-content\/uploads\/2023\/11\/2023-11-04_15h25_25.png\" alt=\"\" class=\"wp-image-98\" srcset=\"https:\/\/blog.fubuha.com\/wp-content\/uploads\/2023\/11\/2023-11-04_15h25_25.png 958w, https:\/\/blog.fubuha.com\/wp-content\/uploads\/2023\/11\/2023-11-04_15h25_25-300x286.png 300w, https:\/\/blog.fubuha.com\/wp-content\/uploads\/2023\/11\/2023-11-04_15h25_25-768x732.png 768w\" sizes=\"(max-width: 958px) 100vw, 958px\" \/><\/figure>\r\n\r\n\r\n\r\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"958\" height=\"913\" src=\"https:\/\/blog.fubuha.com\/wp-content\/uploads\/2023\/11\/2023-11-04_15h25_45.png\" alt=\"\" class=\"wp-image-99\" srcset=\"https:\/\/blog.fubuha.com\/wp-content\/uploads\/2023\/11\/2023-11-04_15h25_45.png 958w, https:\/\/blog.fubuha.com\/wp-content\/uploads\/2023\/11\/2023-11-04_15h25_45-300x286.png 300w, https:\/\/blog.fubuha.com\/wp-content\/uploads\/2023\/11\/2023-11-04_15h25_45-768x732.png 768w\" sizes=\"(max-width: 958px) 100vw, 958px\" \/><\/figure>\r\n\r\n\r\n\r\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"958\" height=\"913\" src=\"https:\/\/blog.fubuha.com\/wp-content\/uploads\/2023\/11\/2023-11-04_15h26_18.png\" alt=\"\" class=\"wp-image-100\" srcset=\"https:\/\/blog.fubuha.com\/wp-content\/uploads\/2023\/11\/2023-11-04_15h26_18.png 958w, https:\/\/blog.fubuha.com\/wp-content\/uploads\/2023\/11\/2023-11-04_15h26_18-300x286.png 300w, https:\/\/blog.fubuha.com\/wp-content\/uploads\/2023\/11\/2023-11-04_15h26_18-768x732.png 768w\" sizes=\"(max-width: 958px) 100vw, 958px\" \/><\/figure>\r\n\r\n\r\n\r\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"958\" height=\"913\" src=\"https:\/\/blog.fubuha.com\/wp-content\/uploads\/2023\/11\/2023-11-04_15h26_43.png\" alt=\"\" class=\"wp-image-101\" srcset=\"https:\/\/blog.fubuha.com\/wp-content\/uploads\/2023\/11\/2023-11-04_15h26_43.png 958w, https:\/\/blog.fubuha.com\/wp-content\/uploads\/2023\/11\/2023-11-04_15h26_43-300x286.png 300w, https:\/\/blog.fubuha.com\/wp-content\/uploads\/2023\/11\/2023-11-04_15h26_43-768x732.png 768w\" sizes=\"(max-width: 958px) 100vw, 958px\" \/><\/figure>\r\n\r\n\r\n\r\n<p><br>After correctly assigning roles to users, we return to App registration and move to the Token configuration tab, where we specify the options to be included in the token.<\/p>\r\n\r\n\r\n\r\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"958\" height=\"913\" src=\"https:\/\/blog.fubuha.com\/wp-content\/uploads\/2023\/11\/2023-11-04_15h29_12.png\" alt=\"\" class=\"wp-image-102\" srcset=\"https:\/\/blog.fubuha.com\/wp-content\/uploads\/2023\/11\/2023-11-04_15h29_12.png 958w, https:\/\/blog.fubuha.com\/wp-content\/uploads\/2023\/11\/2023-11-04_15h29_12-300x286.png 300w, https:\/\/blog.fubuha.com\/wp-content\/uploads\/2023\/11\/2023-11-04_15h29_12-768x732.png 768w\" sizes=\"(max-width: 958px) 100vw, 958px\" \/><\/figure>\r\n\r\n\r\n\r\n<p><br>At this point, we need to launch the application to check if all the steps were correctly executed. We will address this topic in the next post. Here is the expected result in the token:<\/p>\r\n\r\n\r\n\r\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"958\" height=\"913\" src=\"https:\/\/blog.fubuha.com\/wp-content\/uploads\/2023\/11\/2023-11-04_15h39_32-1.png\" alt=\"\" class=\"wp-image-108\" srcset=\"https:\/\/blog.fubuha.com\/wp-content\/uploads\/2023\/11\/2023-11-04_15h39_32-1.png 958w, https:\/\/blog.fubuha.com\/wp-content\/uploads\/2023\/11\/2023-11-04_15h39_32-1-300x286.png 300w, https:\/\/blog.fubuha.com\/wp-content\/uploads\/2023\/11\/2023-11-04_15h39_32-1-768x732.png 768w\" sizes=\"(max-width: 958px) 100vw, 958px\" \/><\/figure>\r\n\r\n\r\n\r\n<p><\/p>\r\n\r\n\r\n\r\n<p><\/p>\r\n","protected":false},"excerpt":{"rendered":"<p>Starting work on your new SPA (Single Page Application) and need a solid and FREE authentication and access control mechanism? In that case, the Microsoft Entra service (formerly Azure Active Directory) might be an excellent solution. This post will discuss how to register a SPA in Microsoft Entra step by step, to secure it against&hellip;<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"om_disable_all_campaigns":false,"inline_featured_image":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":""},"categories":[2],"tags":[8,15,16,14,13,17,6,12],"acf":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/blog.fubuha.com\/index.php\/wp-json\/wp\/v2\/posts\/81"}],"collection":[{"href":"https:\/\/blog.fubuha.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.fubuha.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.fubuha.com\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.fubuha.com\/index.php\/wp-json\/wp\/v2\/comments?post=81"}],"version-history":[{"count":3,"href":"https:\/\/blog.fubuha.com\/index.php\/wp-json\/wp\/v2\/posts\/81\/revisions"}],"predecessor-version":[{"id":149,"href":"https:\/\/blog.fubuha.com\/index.php\/wp-json\/wp\/v2\/posts\/81\/revisions\/149"}],"wp:attachment":[{"href":"https:\/\/blog.fubuha.com\/index.php\/wp-json\/wp\/v2\/media?parent=81"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.fubuha.com\/index.php\/wp-json\/wp\/v2\/categories?post=81"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.fubuha.com\/index.php\/wp-json\/wp\/v2\/tags?post=81"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}