{"id":1282,"date":"2015-01-15T14:04:15","date_gmt":"2015-01-15T17:04:15","guid":{"rendered":"http:\/\/www.dbarj.com.br\/?p=1282"},"modified":"2015-04-01T08:15:13","modified_gmt":"2015-04-01T11:15:13","slug":"limiting-oracle-connection-based-users-ip-information","status":"publish","type":"post","link":"https:\/\/www.dbarj.com.br\/en\/2015\/01\/limiting-oracle-connection-based-users-ip-information\/","title":{"rendered":"Limiting Oracle connection based on the user&#8217;s IP and other information"},"content":{"rendered":"<p>When a user&#8217;s password expires in one of the databases that I manage, some users complain that it is an <strong>application user<\/strong> and the password should never expires. Thus, if the schema really should be used only by the <span style=\"color: #800000; text-decoration: underline;\">application<\/span>, I&#8217;ve created a process that will control this access based on the user session information, which can be one or more of the following:<\/p>\n<ul>\n<li>User hostname<\/li>\n<li>OS username<\/li>\n<li>OS Terminal<\/li>\n<li>User Application Module<\/li>\n<li>User IP Address<\/li>\n<\/ul>\n<p>In this article I will show the operation of this script. Let&#8217;s start:<\/p>\n<p>You must create the following objects:<\/p>\n<ol>\n<li>Application user <strong>Profile<\/strong><\/li>\n<li>Control <strong>Table<\/strong><\/li>\n<li>Access <strong>Trigger<\/strong><\/li>\n<\/ol>\n<p>First, I create a profile that the password <span style=\"text-decoration: underline;\"><strong>does not expire<\/strong><\/span> and whose users belonging to it will be controlled by the login trigger:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"oracledb\">CREATE PROFILE \"DEFAULT_APP_USER\"\r\n    LIMIT \r\n         COMPOSITE_LIMIT DEFAULT \r\n         SESSIONS_PER_USER DEFAULT \r\n         CPU_PER_SESSION DEFAULT \r\n         CPU_PER_CALL DEFAULT \r\n         LOGICAL_READS_PER_SESSION DEFAULT \r\n         LOGICAL_READS_PER_CALL DEFAULT \r\n         IDLE_TIME DEFAULT \r\n         CONNECT_TIME DEFAULT \r\n         PRIVATE_SGA DEFAULT \r\n         FAILED_LOGIN_ATTEMPTS 10\r\n         PASSWORD_LIFE_TIME UNLIMITED\r\n         PASSWORD_REUSE_TIME UNLIMITED\r\n         PASSWORD_REUSE_MAX UNLIMITED\r\n         PASSWORD_VERIFY_FUNCTION DEFAULT\r\n         PASSWORD_LOCK_TIME 30\/1440\r\n         PASSWORD_GRACE_TIME UNLIMITED;<\/pre>\n<p><strong>PS:<\/strong> Note that in this PROFILE, most of the parameters are inherited from the DEFAULT one except that the password never expires and the login error attempts, which are 10 tries to every 30 minutes.<\/p>\n<p>Next, we must create the table (and index) where you will control the access:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"oracledb\">CREATE TABLE TB_FILTER_LOGON\r\n\t(\r\n\tSESSION_USER VARCHAR2(50) NOT NULL,\r\n\tHOST VARCHAR2(50),\r\n\tOS_USER VARCHAR2(50),\r\n\tTERMINAL VARCHAR2(50),\r\n\tMODULE VARCHAR2(50),\r\n\tIP_ADDRESS VARCHAR2(50)\r\n\t)\r\nTABLESPACE USERS;\r\n\r\nCREATE INDEX I1_FILTER_LOGON ON TB_FILTER_LOGON(SESSION_USER) TABLESPACE USERS;<\/pre>\n<p>In this table, the only mandatory field is the &#8220;<strong>SESSION_USER<\/strong>&#8220;, which is the user who is logging in the database. Other fields can be filled or not according to the restrictions you want to do.<\/p>\n<p>As you can notice, the &#8220;SESSION_USER&#8221; column is <span style=\"text-decoration: underline;\"><strong>not<\/strong><\/span> a PK, which allows a combination of different filters to be applied.<\/p>\n<p>Finally, create a trigger that will be used to control the access:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"oracledb\">CREATE OR REPLACE TRIGGER TRG_FILTER_LOGON\r\n  AFTER LOGON ON DATABASE\r\nDECLARE\r\n  V_GLOBAL_NAME VARCHAR2(50);\r\n  V_PROFILE     VARCHAR2(50);\r\n  V_CHECK       NUMBER;\r\n  ---\r\n  V_HOST         VARCHAR2(50);\r\n  V_OS_USER      VARCHAR2(50);\r\n  V_TERMINAL     VARCHAR2(50);\r\n  V_MODULE       VARCHAR2(50);\r\n  V_IP_ADDRESS   VARCHAR2(50);\r\n  V_SESSION_USER VARCHAR2(50);\r\nBEGIN\r\n  -- Created by DBA RJ - www.dbarj.com.br - 2015\/01\r\n  -- Get Connection Info\r\n  V_HOST         := SUBSTR(TRIM(UPPER(SYS_CONTEXT('USERENV', 'HOST'))), 1, 50);\r\n  V_OS_USER      := SUBSTR(TRIM(UPPER(SYS_CONTEXT('USERENV', 'OS_USER'))), 1, 50);\r\n  V_TERMINAL     := SUBSTR(TRIM(UPPER(SYS_CONTEXT('USERENV', 'TERMINAL'))), 1, 50);\r\n  V_MODULE       := SUBSTR(TRIM(UPPER(SYS_CONTEXT('USERENV', 'MODULE'))), 1, 50);\r\n  V_IP_ADDRESS   := SUBSTR(TRIM(UPPER(SYS_CONTEXT('USERENV', 'IP_ADDRESS'))), 1, 50);\r\n  V_SESSION_USER := SUBSTR(TRIM(UPPER(SYS_CONTEXT('USERENV', 'SESSION_USER'))), 1, 50);\r\n\r\n  -- Get Database Name\r\n  SELECT GLOBAL_NAME\r\n  INTO   V_GLOBAL_NAME\r\n  FROM   GLOBAL_NAME;\r\n\r\n  -- Get Profile Name\r\n  SELECT PROFILE\r\n  INTO   V_PROFILE\r\n  FROM   DBA_USERS\r\n  WHERE  USERNAME = V_SESSION_USER;\r\n\r\n  IF V_PROFILE = 'DEFAULT_APP_USER'\r\n  THEN\r\n    -- Check\r\n    CASE V_GLOBAL_NAME\r\n      WHEN 'DBFAIRUS' THEN\r\n      \r\n        SELECT TOTAL1 + TOTAL2\r\n        INTO   V_CHECK\r\n        FROM   (SELECT COUNT(*) TOTAL1\r\n                FROM   TB_FILTER_LOGON\r\n                WHERE  TRIM(UPPER(SESSION_USER)) = V_SESSION_USER\r\n                AND    NVL(TRIM(UPPER(HOST)), NVL(V_HOST, 1)) = NVL(V_HOST, 1)\r\n                AND    NVL(TRIM(UPPER(OS_USER)), NVL(V_OS_USER, 1)) = NVL(V_OS_USER, 1)\r\n                AND    NVL(TRIM(UPPER(TERMINAL)), NVL(V_TERMINAL, 1)) = NVL(V_TERMINAL, 1)\r\n                AND    NVL(TRIM(UPPER(MODULE)), NVL(V_MODULE, 1)) = NVL(V_MODULE, 1)\r\n                AND    NVL(TRIM(UPPER(IP_ADDRESS)), NVL(V_IP_ADDRESS, 1)) = NVL(V_IP_ADDRESS, 1)),\r\n               (SELECT DECODE(COUNT(*), 0, 1, 0) TOTAL2 -- If the entry does not exist, will return 1 to unlock the user\r\n                FROM   TB_FILTER_LOGON\r\n                WHERE  TRIM(UPPER(SESSION_USER)) = V_SESSION_USER);\r\n      \r\n        IF (V_CHECK &lt;&gt; 0)\r\n        THEN\r\n          NULL;\r\n          --OK\r\n        ELSE\r\n          --NULL;\r\n          RAISE_APPLICATION_ERROR(-20000, 'YOU ARE NOT AUTHORIZED TO LOGIN WITH THIS USERNAME. PLEASE CONTACT YOUR DBA.');\r\n        END IF;\r\n      ELSE\r\n        NULL;\r\n    END CASE; END IF;\r\nEXCEPTION\r\n  -- Avoid problems when fails to get GLOBAL_NAME or PROFILE (Data Guard)\r\n  WHEN NO_DATA_FOUND THEN\r\n    NULL;\r\nEND;\r\n\/<\/pre>\n<h3>Sample scenarios:<\/h3>\n<p>1) The <strong>SCOTT<\/strong> user can connect only:<\/p>\n<ul>\n<li>From IP 10.192.12.43 with OS user &#8220;scripts&#8221; OR<\/li>\n<li>From IP 10.192.12.40 with OS user &#8220;root&#8221;<\/li>\n<\/ul>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">SQL&gt; select t.* from tb_filter_logon t\r\n\r\n    SESSION_USER    HOST       OS_USER        TERMINAL    MODULE    IP_ADDRESS\r\n1   SCOTT                      scripts                              10.192.12.43\r\n2   SCOTT                      root                                 10.192.12.40<\/pre>\n<p>2) The <strong>EXPUSER<\/strong> user can connect only:<\/p>\n<ul>\n<li>From the server whose hostname is &#8220;syslogfubddsne001&#8221; and using &#8220;SQL Developer&#8221; OR<\/li>\n<li>From IP 10.192.12.40 using JDBC and with OS user\u00a0&#8220;javacode&#8221;<\/li>\n<\/ul>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">SQL&gt; select t.* from tb_filter_logon t\r\n\r\n    SESSION_USER    HOST               OS_USER   TERMINAL  MODULE            IP_ADDRESS  \r\n1   EXPUSER         syslogfubddsne001                      SQL Developer              \r\n2   EXPUSER                            javacode            JDBC Thin Client  10.192.12.40<\/pre>\n<p><strong>PS:<\/strong> If there is no row for some (<span style=\"color: #800000;\"><strong>SESSION_USER<\/strong><\/span>) in the table, the user will not be blocked.<\/p>\n<p>Finally, remember: if the user has the &#8220;<strong>Administer Database Trigger<\/strong>&#8221; GRANT, directly or indirectly (as having the <span style=\"color: #800000;\"><strong>DBA<\/strong><\/span> role), it will never be blocked by login triggers!<\/p>\n<b>Have you enjoyed? Please leave a comment or give a \ud83d\udc4d!<\/b>\n<div class='watch-action'><div class='watch-position align-left'><div class='action-like'><a class='lbg-style2 like-1282 jlk' href='javascript:void(0)' data-task='like' data-post_id='1282' data-nonce='de4404f630' rel='nofollow'><img class='wti-pixel' src='https:\/\/www.dbarj.com.br\/wp-content\/plugins\/wti-like-post\/images\/pixel.gif' title='Like' \/><span class='lc-1282 lc'>+16<\/span><\/a><\/div><\/div> <div class='status-1282 status align-left'><\/div><\/div><div class='wti-clear'><\/div>","protected":false},"excerpt":{"rendered":"<p>When a user&#8217;s password expires in one of the databases that I manage, some users complain that it is an application user and the password should never expires. Thus, if the schema really should be used only by the application, I&#8217;ve created a process that will control this access based on the user session information, &hellip; <\/p>\n<p><a class=\"more-link btn\" href=\"https:\/\/www.dbarj.com.br\/en\/2015\/01\/limiting-oracle-connection-based-users-ip-information\/\">Continue reading<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[20],"tags":[],"class_list":["post-1282","post","type-post","status-publish","format-standard","hentry","category-security-en","item-wrap"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Limiting Oracle connection based on the user&#039;s IP and other information - DBA - Rodrigo Jorge - Oracle Tips and Guides<\/title>\n<meta name=\"description\" content=\"How to limit Oracle connection based on the user&#039;s IP and other information\" \/>\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.dbarj.com.br\/en\/2015\/01\/limiting-oracle-connection-based-users-ip-information\/\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"DBA RJ\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.dbarj.com.br\\\/en\\\/2015\\\/01\\\/limiting-oracle-connection-based-users-ip-information\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.dbarj.com.br\\\/en\\\/2015\\\/01\\\/limiting-oracle-connection-based-users-ip-information\\\/\"},\"author\":{\"name\":\"DBA RJ\",\"@id\":\"https:\\\/\\\/www.dbarj.com.br\\\/en\\\/#\\\/schema\\\/person\\\/28a44ca3a6633fe4156ad1ea209d40a9\"},\"headline\":\"Limiting Oracle connection based on the user&#8217;s IP and other information\",\"datePublished\":\"2015-01-15T17:04:15+00:00\",\"dateModified\":\"2015-04-01T11:15:13+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.dbarj.com.br\\\/en\\\/2015\\\/01\\\/limiting-oracle-connection-based-users-ip-information\\\/\"},\"wordCount\":356,\"commentCount\":6,\"publisher\":{\"@id\":\"https:\\\/\\\/www.dbarj.com.br\\\/en\\\/#\\\/schema\\\/person\\\/28a44ca3a6633fe4156ad1ea209d40a9\"},\"articleSection\":[\"Database Security\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.dbarj.com.br\\\/en\\\/2015\\\/01\\\/limiting-oracle-connection-based-users-ip-information\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.dbarj.com.br\\\/en\\\/2015\\\/01\\\/limiting-oracle-connection-based-users-ip-information\\\/\",\"url\":\"https:\\\/\\\/www.dbarj.com.br\\\/en\\\/2015\\\/01\\\/limiting-oracle-connection-based-users-ip-information\\\/\",\"name\":\"Limiting Oracle connection based on the user's IP and other information - DBA - Rodrigo Jorge - Oracle Tips and Guides\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.dbarj.com.br\\\/en\\\/#website\"},\"datePublished\":\"2015-01-15T17:04:15+00:00\",\"dateModified\":\"2015-04-01T11:15:13+00:00\",\"description\":\"How to limit Oracle connection based on the user's IP and other information\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.dbarj.com.br\\\/en\\\/2015\\\/01\\\/limiting-oracle-connection-based-users-ip-information\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.dbarj.com.br\\\/en\\\/2015\\\/01\\\/limiting-oracle-connection-based-users-ip-information\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.dbarj.com.br\\\/en\\\/2015\\\/01\\\/limiting-oracle-connection-based-users-ip-information\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.dbarj.com.br\\\/en\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Limiting Oracle connection based on the user's IP and other information\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.dbarj.com.br\\\/en\\\/#website\",\"url\":\"https:\\\/\\\/www.dbarj.com.br\\\/en\\\/\",\"name\":\"DBA - Rodrigo Jorge - Oracle Tips and Guides\",\"description\":\"Blog about Databases, Security and High Availability\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.dbarj.com.br\\\/en\\\/#\\\/schema\\\/person\\\/28a44ca3a6633fe4156ad1ea209d40a9\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.dbarj.com.br\\\/en\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/www.dbarj.com.br\\\/en\\\/#\\\/schema\\\/person\\\/28a44ca3a6633fe4156ad1ea209d40a9\",\"name\":\"DBA RJ\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.dbarj.com.br\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/RodrigoJorgePOUG19.png\",\"url\":\"https:\\\/\\\/www.dbarj.com.br\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/RodrigoJorgePOUG19.png\",\"contentUrl\":\"https:\\\/\\\/www.dbarj.com.br\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/RodrigoJorgePOUG19.png\",\"width\":712,\"height\":712,\"caption\":\"DBA RJ\"},\"logo\":{\"@id\":\"https:\\\/\\\/www.dbarj.com.br\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/RodrigoJorgePOUG19.png\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Limiting Oracle connection based on the user's IP and other information - DBA - Rodrigo Jorge - Oracle Tips and Guides","description":"How to limit Oracle connection based on the user's IP and other information","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.dbarj.com.br\/en\/2015\/01\/limiting-oracle-connection-based-users-ip-information\/","twitter_misc":{"Written by":"DBA RJ","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbarj.com.br\/en\/2015\/01\/limiting-oracle-connection-based-users-ip-information\/#article","isPartOf":{"@id":"https:\/\/www.dbarj.com.br\/en\/2015\/01\/limiting-oracle-connection-based-users-ip-information\/"},"author":{"name":"DBA RJ","@id":"https:\/\/www.dbarj.com.br\/en\/#\/schema\/person\/28a44ca3a6633fe4156ad1ea209d40a9"},"headline":"Limiting Oracle connection based on the user&#8217;s IP and other information","datePublished":"2015-01-15T17:04:15+00:00","dateModified":"2015-04-01T11:15:13+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbarj.com.br\/en\/2015\/01\/limiting-oracle-connection-based-users-ip-information\/"},"wordCount":356,"commentCount":6,"publisher":{"@id":"https:\/\/www.dbarj.com.br\/en\/#\/schema\/person\/28a44ca3a6633fe4156ad1ea209d40a9"},"articleSection":["Database Security"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbarj.com.br\/en\/2015\/01\/limiting-oracle-connection-based-users-ip-information\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbarj.com.br\/en\/2015\/01\/limiting-oracle-connection-based-users-ip-information\/","url":"https:\/\/www.dbarj.com.br\/en\/2015\/01\/limiting-oracle-connection-based-users-ip-information\/","name":"Limiting Oracle connection based on the user's IP and other information - DBA - Rodrigo Jorge - Oracle Tips and Guides","isPartOf":{"@id":"https:\/\/www.dbarj.com.br\/en\/#website"},"datePublished":"2015-01-15T17:04:15+00:00","dateModified":"2015-04-01T11:15:13+00:00","description":"How to limit Oracle connection based on the user's IP and other information","breadcrumb":{"@id":"https:\/\/www.dbarj.com.br\/en\/2015\/01\/limiting-oracle-connection-based-users-ip-information\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbarj.com.br\/en\/2015\/01\/limiting-oracle-connection-based-users-ip-information\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbarj.com.br\/en\/2015\/01\/limiting-oracle-connection-based-users-ip-information\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.dbarj.com.br\/en\/"},{"@type":"ListItem","position":2,"name":"Limiting Oracle connection based on the user's IP and other information"}]},{"@type":"WebSite","@id":"https:\/\/www.dbarj.com.br\/en\/#website","url":"https:\/\/www.dbarj.com.br\/en\/","name":"DBA - Rodrigo Jorge - Oracle Tips and Guides","description":"Blog about Databases, Security and High Availability","publisher":{"@id":"https:\/\/www.dbarj.com.br\/en\/#\/schema\/person\/28a44ca3a6633fe4156ad1ea209d40a9"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.dbarj.com.br\/en\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/www.dbarj.com.br\/en\/#\/schema\/person\/28a44ca3a6633fe4156ad1ea209d40a9","name":"DBA RJ","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.dbarj.com.br\/wp-content\/uploads\/2019\/09\/RodrigoJorgePOUG19.png","url":"https:\/\/www.dbarj.com.br\/wp-content\/uploads\/2019\/09\/RodrigoJorgePOUG19.png","contentUrl":"https:\/\/www.dbarj.com.br\/wp-content\/uploads\/2019\/09\/RodrigoJorgePOUG19.png","width":712,"height":712,"caption":"DBA RJ"},"logo":{"@id":"https:\/\/www.dbarj.com.br\/wp-content\/uploads\/2019\/09\/RodrigoJorgePOUG19.png"}}]}},"_links":{"self":[{"href":"https:\/\/www.dbarj.com.br\/en\/wp-json\/wp\/v2\/posts\/1282","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dbarj.com.br\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dbarj.com.br\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dbarj.com.br\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dbarj.com.br\/en\/wp-json\/wp\/v2\/comments?post=1282"}],"version-history":[{"count":0,"href":"https:\/\/www.dbarj.com.br\/en\/wp-json\/wp\/v2\/posts\/1282\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.dbarj.com.br\/en\/wp-json\/wp\/v2\/media?parent=1282"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbarj.com.br\/en\/wp-json\/wp\/v2\/categories?post=1282"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbarj.com.br\/en\/wp-json\/wp\/v2\/tags?post=1282"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}