{"id":67,"date":"2016-10-10T23:46:37","date_gmt":"2016-10-10T15:46:37","guid":{"rendered":"https:\/\/www.theinsecurewire.com\/?p=67"},"modified":"2016-10-10T23:46:37","modified_gmt":"2016-10-10T15:46:37","slug":"palo-alto-api-captive-portal-logout","status":"publish","type":"post","link":"https:\/\/www.insecurewi.re\/index.php\/2016\/10\/10\/palo-alto-api-captive-portal-logout\/","title":{"rendered":"Using the Palo Alto API for Captive Portal Logout"},"content":{"rendered":"<p>It&#8217;s API time! Haven&#8217;t had a post in a while but in wanted to share this:<\/p>\n<p>This year I had the opportunity to roll out a Palo Alto networks next-gen firewall appliance. We have many areas of our college that require specific access to deliver classes (think IT, engineering etc). These areas are separated by an L2 firewall. Since i was rolling out a full user-id implementation of Palo Alto, i needed a solution that allowed these isolated areas to be able to access the network.<\/p>\n<p><a href=\"https:\/\/www.paloaltonetworks.com\/etc\/clientlibs\/pan\/img\/logo-blue-medium.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium\" src=\"https:\/\/www.insecurewi.re\/wp-content\/themes\/breek\/assets\/images\/transparent.gif\" data-lazy=\"true\" data-src=\"https:\/\/www.paloaltonetworks.com\/etc\/clientlibs\/pan\/img\/logo-blue-medium.png\" alt=\"Palo Alto Networks\" width=\"337\" height=\"180\" \/><\/a><\/p>\n<p>This is where the captive portal is really handy. You can redirect HTTP requests to a login page where the user is authenticated against your directory source and at the same time User-ID on the PAN will map that user to the source IP. The user will then be able to hit layer 7 rules based on user or group. You will also get the full content-id tracking of which user did what during their session. The issue that I faced was how to remove stale sessions if a user left a PC before the timeout values kicked in.<\/p>\n<p>A really cool feature of PAN-OS is its extensive RESTful XML API. You can browse PAN firewalls API by simply going to http(s):\/\/hostname\/api\/ (where host name is the device name and domain or IP address). Using the XML API i was able to create a php logout script which when called would remove the user to IP mapping from both the data plane and the management plane. The API supports both http GET and POST methods. The guide is accessible <a href=\"https:\/\/www.paloaltonetworks.com\/documentation\/70\/pan-os\/pan-os\/device-management\/use-the-xml-api.html\" target=\"_blank\" rel=\"noopener\">here<\/a>.<\/p>\n<p>Below is the code for logout.php which we call with wget or similar (no proxy). I used PHP as it was easy with the global $_SERVER[&#8216;REMOTE_ADDR&#8217;] variable &#8211; this is so we could get the true client address as some machines are behind nat or even worse dual nat! The php curl module is used to access the PAN API using the http GET method.<\/p>\n<p>The variables needed are DNS name of the device and your API key. A prerequisite is that your host has the php5-curl package installed (for debian based \/w apache it is &#8216;sudo apt-get install php5-curl&#8217;).<\/p>\n[php]\n<?php\n$ipaddress = $_SERVER['REMOTE_ADDR'];\n$hostname = \"hostname\";\n$key = \"your key\";<\/code><\/p>\n<p>$ch = curl_init();<br \/>\n$url = &#8220;https:\/\/&#8221; .&#8221;$hostname&#8221;. &#8220;\/api\/?type=op&amp;key=&#8221; .&#8221;$key&#8221;. &#8220;&amp;vsys=vsys1&amp;cmd=&lt;clear&gt;&lt;user-cache&gt;&lt;ip&gt;&#8221; .&#8221;$ipaddress<br \/>\ncurl_setopt($ch, CURLOPT_URL, $url);<br \/>\ncurl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);<br \/>\ncurl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);<\/p>\n<p>$output = curl_exec($ch);<br \/>\ncurl_close($ch);<br \/>\n$format_dp = &#8220;&lt;br \/&gt;&lt;br \/&gt;Response from PAN User-ID Data Plane:&lt;br \/&gt; &#8220;;<br \/>\n$response = $format_dp.$output;<br \/>\necho $response .&#8221; = api response &lt;br \/&gt;&lt;br \/&gt;&#8221;;<\/p>\n<p>$format_msg = &#8220;I think your IP address is &#8220;;<br \/>\n$msg = $format_msg.$ipaddress;<br \/>\necho $msg .&#8221;&lt;br&gt;&lt;br&gt;&#8221;;<\/p>\n<p>$ch1 = curl_init();<br \/>\n$urlmp = &#8220;https:\/\/&#8221; .&#8221;$hostname&#8221;. &#8220;\/api\/?type=op&amp;key=&#8221; .&#8221;$key&#8221;. &#8220;&amp;vsys=vsys1&amp;cmd=&lt;clear&gt;&lt;user-cache-mp&gt;&lt;ip&gt;&#8221; .&#8221;$ipaddress<br \/>\ncurl_setopt($ch1, CURLOPT_URL, $urlmp);<br \/>\ncurl_setopt($ch1, CURLOPT_SSL_VERIFYHOST, false);<br \/>\ncurl_setopt($ch1, CURLOPT_SSL_VERIFYPEER, false);<\/p>\n<p>$output1 = curl_exec($ch1);<br \/>\ncurl_close($ch1);<\/p>\n<p>$format_mp = &#8220;Response from PAN User-ID Mgmt Plane: &lt;br \/&gt;&#8221;;<br \/>\n$response1 = $format_mp.$output1;<br \/>\necho $response1 . &#8221; = api response&#8221;;<br \/>\n?><br \/>\n[\/php]\nQuite simply you can call the script with a shell script or browse to the php page. We used a shell script and wget to http GET the script. You could set the shell \/ batch \/ powershell to run at logoff \/ startup whatever suits.<\/p>\n<p>Originally published as &#8216;Using the Palo Alto API for Captive Portal Logout&#8217;.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>It&#8217;s API time! Haven&#8217;t had a post in a while but in wanted to share this: This year I had the opportunity to roll out&#8230;<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[28,9],"tags":[],"class_list":["post-67","post","type-post","status-publish","format-standard","hentry","category-firewall","category-scripting"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.1.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Using the Palo Alto API for Captive Portal Logout - Insecure Wire<\/title>\n<meta name=\"description\" content=\"Using the Palo Alto Networks XML API Captive Portal for programmatic logout with PHP and cURL\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.insecurewi.re\/index.php\/2016\/10\/10\/palo-alto-api-captive-portal-logout\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Using the Palo Alto API for Captive Portal Logout - Insecure Wire\" \/>\n<meta property=\"og:description\" content=\"Using the Palo Alto Networks XML API Captive Portal for programmatic logout with PHP and cURL\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.insecurewi.re\/index.php\/2016\/10\/10\/palo-alto-api-captive-portal-logout\/\" \/>\n<meta property=\"og:site_name\" content=\"Insecure Wire\" \/>\n<meta property=\"article:published_time\" content=\"2016-10-10T15:46:37+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.paloaltonetworks.com\/etc\/clientlibs\/pan\/img\/logo-blue-medium.png\" \/>\n<meta name=\"author\" content=\"nikonau\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@https:\/\/twitter.com\/insecurewire\" \/>\n<meta name=\"twitter:site\" content=\"@insecurewire\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"nikonau\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.insecurewi.re\/index.php\/2016\/10\/10\/palo-alto-api-captive-portal-logout\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.insecurewi.re\/index.php\/2016\/10\/10\/palo-alto-api-captive-portal-logout\/\"},\"author\":{\"name\":\"nikonau\",\"@id\":\"https:\/\/www.insecurewi.re\/#\/schema\/person\/8ba08b41fc754b971a948ead6ccb777d\"},\"headline\":\"Using the Palo Alto API for Captive Portal Logout\",\"datePublished\":\"2016-10-10T15:46:37+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.insecurewi.re\/index.php\/2016\/10\/10\/palo-alto-api-captive-portal-logout\/\"},\"wordCount\":441,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.insecurewi.re\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.insecurewi.re\/index.php\/2016\/10\/10\/palo-alto-api-captive-portal-logout\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.paloaltonetworks.com\/etc\/clientlibs\/pan\/img\/logo-blue-medium.png\",\"articleSection\":[\"Firewall\",\"Scripting\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.insecurewi.re\/index.php\/2016\/10\/10\/palo-alto-api-captive-portal-logout\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.insecurewi.re\/index.php\/2016\/10\/10\/palo-alto-api-captive-portal-logout\/\",\"url\":\"https:\/\/www.insecurewi.re\/index.php\/2016\/10\/10\/palo-alto-api-captive-portal-logout\/\",\"name\":\"Using the Palo Alto API for Captive Portal Logout - Insecure Wire\",\"isPartOf\":{\"@id\":\"https:\/\/www.insecurewi.re\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.insecurewi.re\/index.php\/2016\/10\/10\/palo-alto-api-captive-portal-logout\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.insecurewi.re\/index.php\/2016\/10\/10\/palo-alto-api-captive-portal-logout\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.paloaltonetworks.com\/etc\/clientlibs\/pan\/img\/logo-blue-medium.png\",\"datePublished\":\"2016-10-10T15:46:37+00:00\",\"description\":\"Using the Palo Alto Networks XML API Captive Portal for programmatic logout with PHP and cURL\",\"breadcrumb\":{\"@id\":\"https:\/\/www.insecurewi.re\/index.php\/2016\/10\/10\/palo-alto-api-captive-portal-logout\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.insecurewi.re\/index.php\/2016\/10\/10\/palo-alto-api-captive-portal-logout\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.insecurewi.re\/index.php\/2016\/10\/10\/palo-alto-api-captive-portal-logout\/#primaryimage\",\"url\":\"https:\/\/www.paloaltonetworks.com\/etc\/clientlibs\/pan\/img\/logo-blue-medium.png\",\"contentUrl\":\"https:\/\/www.paloaltonetworks.com\/etc\/clientlibs\/pan\/img\/logo-blue-medium.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.insecurewi.re\/index.php\/2016\/10\/10\/palo-alto-api-captive-portal-logout\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.insecurewi.re\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Using the Palo Alto API for Captive Portal Logout\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.insecurewi.re\/#website\",\"url\":\"https:\/\/www.insecurewi.re\/\",\"name\":\"Insecure Wire\",\"description\":\"A Network Engineer\u2019s Perspective.\",\"publisher\":{\"@id\":\"https:\/\/www.insecurewi.re\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.insecurewi.re\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.insecurewi.re\/#organization\",\"name\":\"Insecure Wire\",\"url\":\"https:\/\/www.insecurewi.re\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.insecurewi.re\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.insecurewi.re\/wp-content\/uploads\/2023\/10\/cloud.png\",\"contentUrl\":\"https:\/\/www.insecurewi.re\/wp-content\/uploads\/2023\/10\/cloud.png\",\"width\":32,\"height\":32,\"caption\":\"Insecure Wire\"},\"image\":{\"@id\":\"https:\/\/www.insecurewi.re\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/x.com\/insecurewire\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.insecurewi.re\/#\/schema\/person\/8ba08b41fc754b971a948ead6ccb777d\",\"name\":\"nikonau\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.insecurewi.re\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/2d1b9d9dc90da4f6d3da31b870f418c6b3553ba9be48d53e8ee3a35b0adb1d35?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/2d1b9d9dc90da4f6d3da31b870f418c6b3553ba9be48d53e8ee3a35b0adb1d35?s=96&d=mm&r=g\",\"caption\":\"nikonau\"},\"sameAs\":[\"https:\/\/x.com\/https:\/\/twitter.com\/insecurewire\"],\"url\":\"https:\/\/www.insecurewi.re\/index.php\/author\/nikon\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Using the Palo Alto API for Captive Portal Logout - Insecure Wire","description":"Using the Palo Alto Networks XML API Captive Portal for programmatic logout with PHP and cURL","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:\/\/www.insecurewi.re\/index.php\/2016\/10\/10\/palo-alto-api-captive-portal-logout\/","og_locale":"en_US","og_type":"article","og_title":"Using the Palo Alto API for Captive Portal Logout - Insecure Wire","og_description":"Using the Palo Alto Networks XML API Captive Portal for programmatic logout with PHP and cURL","og_url":"https:\/\/www.insecurewi.re\/index.php\/2016\/10\/10\/palo-alto-api-captive-portal-logout\/","og_site_name":"Insecure Wire","article_published_time":"2016-10-10T15:46:37+00:00","og_image":[{"url":"https:\/\/www.paloaltonetworks.com\/etc\/clientlibs\/pan\/img\/logo-blue-medium.png","type":"","width":"","height":""}],"author":"nikonau","twitter_card":"summary_large_image","twitter_creator":"@https:\/\/twitter.com\/insecurewire","twitter_site":"@insecurewire","twitter_misc":{"Written by":"nikonau","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.insecurewi.re\/index.php\/2016\/10\/10\/palo-alto-api-captive-portal-logout\/#article","isPartOf":{"@id":"https:\/\/www.insecurewi.re\/index.php\/2016\/10\/10\/palo-alto-api-captive-portal-logout\/"},"author":{"name":"nikonau","@id":"https:\/\/www.insecurewi.re\/#\/schema\/person\/8ba08b41fc754b971a948ead6ccb777d"},"headline":"Using the Palo Alto API for Captive Portal Logout","datePublished":"2016-10-10T15:46:37+00:00","mainEntityOfPage":{"@id":"https:\/\/www.insecurewi.re\/index.php\/2016\/10\/10\/palo-alto-api-captive-portal-logout\/"},"wordCount":441,"commentCount":0,"publisher":{"@id":"https:\/\/www.insecurewi.re\/#organization"},"image":{"@id":"https:\/\/www.insecurewi.re\/index.php\/2016\/10\/10\/palo-alto-api-captive-portal-logout\/#primaryimage"},"thumbnailUrl":"https:\/\/www.paloaltonetworks.com\/etc\/clientlibs\/pan\/img\/logo-blue-medium.png","articleSection":["Firewall","Scripting"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.insecurewi.re\/index.php\/2016\/10\/10\/palo-alto-api-captive-portal-logout\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.insecurewi.re\/index.php\/2016\/10\/10\/palo-alto-api-captive-portal-logout\/","url":"https:\/\/www.insecurewi.re\/index.php\/2016\/10\/10\/palo-alto-api-captive-portal-logout\/","name":"Using the Palo Alto API for Captive Portal Logout - Insecure Wire","isPartOf":{"@id":"https:\/\/www.insecurewi.re\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.insecurewi.re\/index.php\/2016\/10\/10\/palo-alto-api-captive-portal-logout\/#primaryimage"},"image":{"@id":"https:\/\/www.insecurewi.re\/index.php\/2016\/10\/10\/palo-alto-api-captive-portal-logout\/#primaryimage"},"thumbnailUrl":"https:\/\/www.paloaltonetworks.com\/etc\/clientlibs\/pan\/img\/logo-blue-medium.png","datePublished":"2016-10-10T15:46:37+00:00","description":"Using the Palo Alto Networks XML API Captive Portal for programmatic logout with PHP and cURL","breadcrumb":{"@id":"https:\/\/www.insecurewi.re\/index.php\/2016\/10\/10\/palo-alto-api-captive-portal-logout\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.insecurewi.re\/index.php\/2016\/10\/10\/palo-alto-api-captive-portal-logout\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.insecurewi.re\/index.php\/2016\/10\/10\/palo-alto-api-captive-portal-logout\/#primaryimage","url":"https:\/\/www.paloaltonetworks.com\/etc\/clientlibs\/pan\/img\/logo-blue-medium.png","contentUrl":"https:\/\/www.paloaltonetworks.com\/etc\/clientlibs\/pan\/img\/logo-blue-medium.png"},{"@type":"BreadcrumbList","@id":"https:\/\/www.insecurewi.re\/index.php\/2016\/10\/10\/palo-alto-api-captive-portal-logout\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.insecurewi.re\/"},{"@type":"ListItem","position":2,"name":"Using the Palo Alto API for Captive Portal Logout"}]},{"@type":"WebSite","@id":"https:\/\/www.insecurewi.re\/#website","url":"https:\/\/www.insecurewi.re\/","name":"Insecure Wire","description":"A Network Engineer\u2019s Perspective.","publisher":{"@id":"https:\/\/www.insecurewi.re\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.insecurewi.re\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.insecurewi.re\/#organization","name":"Insecure Wire","url":"https:\/\/www.insecurewi.re\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.insecurewi.re\/#\/schema\/logo\/image\/","url":"https:\/\/www.insecurewi.re\/wp-content\/uploads\/2023\/10\/cloud.png","contentUrl":"https:\/\/www.insecurewi.re\/wp-content\/uploads\/2023\/10\/cloud.png","width":32,"height":32,"caption":"Insecure Wire"},"image":{"@id":"https:\/\/www.insecurewi.re\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/x.com\/insecurewire"]},{"@type":"Person","@id":"https:\/\/www.insecurewi.re\/#\/schema\/person\/8ba08b41fc754b971a948ead6ccb777d","name":"nikonau","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.insecurewi.re\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/2d1b9d9dc90da4f6d3da31b870f418c6b3553ba9be48d53e8ee3a35b0adb1d35?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/2d1b9d9dc90da4f6d3da31b870f418c6b3553ba9be48d53e8ee3a35b0adb1d35?s=96&d=mm&r=g","caption":"nikonau"},"sameAs":["https:\/\/x.com\/https:\/\/twitter.com\/insecurewire"],"url":"https:\/\/www.insecurewi.re\/index.php\/author\/nikon\/"}]}},"_links":{"self":[{"href":"https:\/\/www.insecurewi.re\/index.php\/wp-json\/wp\/v2\/posts\/67","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.insecurewi.re\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.insecurewi.re\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.insecurewi.re\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.insecurewi.re\/index.php\/wp-json\/wp\/v2\/comments?post=67"}],"version-history":[{"count":0,"href":"https:\/\/www.insecurewi.re\/index.php\/wp-json\/wp\/v2\/posts\/67\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.insecurewi.re\/index.php\/wp-json\/wp\/v2\/media?parent=67"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.insecurewi.re\/index.php\/wp-json\/wp\/v2\/categories?post=67"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.insecurewi.re\/index.php\/wp-json\/wp\/v2\/tags?post=67"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}